#haskell
#хаскелл
Вопрос:
Это выражение неверно.
f = show
Однако в ghci это законно
let f = show
Более того, его тип изменен на
() -> String
Есть ли какое-либо объяснение этому явлению?
Ответ №1:
Приглашение ghci ведет себя так, как если ExtendedDefaultRules
бы расширение было включено.
В частности, это означает, что:
Тип unit () добавляется в начало стандартного списка типов, которые проверяются при выполнении типа по умолчанию.
Итак, чтобы получить такое же поведение из исходного файла, либо скомпилируйте с -XExtendedDefaultRules
помощью, либо добавьте {-# LANGUAGE ExtendedDefaultRules #-}
в начало файла.