In Haskell GH C base содержит определения экземпляра Functor для типа (->) r
:
instance Functor ((->) r) where
fmap = (.)
Typeclassopedia объясняет ((->) e)
- это тип функций, которые принимают значение типа e в качестве параметра. Это имеет смысл, но я не понимаю, как (->) e
используется позже, по сравнению с Maybe
, Either a
, даже []
.
Я думаю, что понимаю эти определения функторов, которые называются: Maybe
, Either a
, но мне трудно понять, как используется «безымянный» тип (->) r
.
Означает ли это, что мне нужно подозревать любой другой a ->
в каждой сигнатуре типа как функтор? Это способ определения свойств стрелки ->
в Haskell?
Также это та же стрелка, что и в сигнатурах типа, или стрелка из лямбда-функций? Я попытался найти в отчете Haskell, но там ->
используется в собственной нотации для документации, так что здесь не повезло.
Заранее благодарим за любые подсказки, которые могут помочь сломать лед вокруг (->) r
.
Обновление: основываясь на комментариях, я думаю, мне следует спросить, где определен конструктор типа ->
? это встроенный?
Ответ: ->
встроено, и это «стрелка функции» или «конструктор функционального типа» .