Новый для Haskell так жаль, если это очень простой
Этот пример взят из "Real World Haskell" -
ghci> :type fst
fst :: (a, b) -> a
Они показывают тип функции fst
, а затем следуют ей с этим абзацем...
"Тип результата fst
- a
. Мы уже упоминали, что параметрический полиморфизм делает реальный тип недоступным: fst
не имеет достаточной информации для построения значения типа a
, а также не может превратить a
в b
. Таким образом, единственное возможное действительное поведение (опускание бесконечного циклов или сбоев), это может означать возврат первого элемента пары.
Я чувствую, что мне не хватает фундаментальной точки абзаца и, возможно, что-то важное в Haskell. Почему функция fst
не может возвращать тип b
? Почему он не мог взять кортеж в качестве параметра, а просто вернуть Int
(или любой другой тип, который не является a
)? Я не понимаю, почему он ДОЛЖЕН вернуть тип a
?
Спасибо