Вопрос двух-недельного новичка: 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 = ((->))
Здравствуйте, 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).