[Haskell] Pointed, pure, ((->) e)
От: Haskell.Curry  
Дата: 23.09.09 12:56
Оценка:
Вопрос двух-недельного новичка: The Monad Reader Issue 14, typeclassopedia, Pointed type class, автор предлагает самостоятельно догадаться как выглядит имплементация:

pure:: a -> f a


для ((->) e), правильно ли я понимаю что это

pure = ((->))

?
Re: [Haskell] Pointed, pure, ((->) e)
От: Аноним  
Дата: 23.09.09 13:27
Оценка:
Здравствуйте, Haskell.Curry, Вы писали:

HC>Вопрос двух-недельного новичка

Это прикол такой?
Re: [Haskell] Pointed, pure, ((->) e)
От: Аноним  
Дата: 23.09.09 14:00
Оценка:
Здравствуйте, Haskell.Curry, Вы писали:

HC>для ((->) e), правильно ли я понимаю что это


HC>pure = ((->))


Нет, неправильно.
Re: [Haskell] Pointed, pure, ((->) e)
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.09.09 14:09
Оценка:
Здравствуйте, Haskell.Curry, Вы писали:

HC>правильно ли я понимаю что это

HC>pure = ((->))

pure = const
Re[2]: [Haskell] Pointed, pure, ((->) e)
От: Haskell.Curry  
Дата: 23.09.09 17:02
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Haskell.Curry, Вы писали:


HC>>правильно ли я понимаю что это

HC>>pure = ((->))

N>
N>pure = const
N>

к сожалению пока не понятно как это выходит (const — constant function const x _ = x). Не могли бы вы разъяснить?
Re[3]: [Haskell] Pointed, pure, ((->) e)
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 24.09.09 11:14
Оценка: 57 (4)
Здравствуйте, Haskell.Curry, Вы писали:

HC>к сожалению пока не понятно как это выходит (const — constant function const x _ = x). Не могли бы вы разъяснить?


Смотри! Тип pure :: a -> f a. Где f у нас это ((->) e), или по-простому (e->)
Меняем f на это значение, получаем

pure :: a -> (e -> a)

или без скобок

pure :: a -> e -> a

Т.е. мы должны реализовать функцию, которая принимает два аргумента разных типов (типы ничем не ограничены — это любые-любые типы), и возвращает результат типа первого аргумента. Очевидно, что написать такую функцию мы можем, только если будем возвращать первый аргумент (если не считать pure = undefined).

pure x y = x

Это и есть определение const, т.е.

pure = const
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.