Я изучаю учебник "Учите вас в Haskell", и я нахожусь в этой части:
lucky :: (Integral a) => a -> String
Когда я пытаюсь выполнить эту строку, я получаю:
<interactive>:1:1: Not in scope: `lucky'
Что я делаю неправильно?
Ответ 1
Это не функциональный код, это сигнатура функции, которая может быть сохранена только в модуле вместе с определением функции и быть загружена в GHCi.
Эта подпись означает, что вы собираетесь определить функцию lucky, которая получает Integer и возвращает String.
Однако, если вы создаете свои функции с помощью GHCi в качестве интерактивного интерпретатора, вы можете позволить Haskell вывести свой тип функции, например. г:.
ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String