ghci 'Не в области:' сообщение - PullRequest
47 голосов
/ 24 марта 2011

Я прохожу учебник «Изучаю тебя на Хаскеле» и нахожусь в этой части:

lucky :: (Integral a) => a -> String

Когда я пытаюсь выполнить эту строку, получаю:

<interactive>:1:1: Not in scope: `lucky'

Что я делаю не так?

Ответы [ 2 ]

55 голосов
/ 24 марта 2011

Это не код функции, это сигнатура функции, которая может быть сохранена только в модуле вместе с определением функции и загружена в GHCi.

Эта подпись означает, что вы собираетесь определить функциюlucky, который получает Integer и возвращает String.

Однако, если вы составляете свои функции, используя GHCi в качестве интерактивного интерпретатора, вы можете позволить Haskell выводить тип вашей функции, например:

ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String
6 голосов
/ 13 августа 2018

Если вы хотите попробовать в GHCI, вы можете использовать многострочный командный блок

:{
lucky :: Int -> String
lucky a = show(a)
:}

:type lucky 
lucky :: Int -> String
...