web-dev-qa-db-ja.com

ghci「スコープ外:」メッセージ

「Haskellを学ぼう」チュートリアルを進めています。この部分にいます。

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

この行を実行しようとすると、次のようになります。

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

私は何を間違えていますか?

48
user181351

これは機能コードではなく、機能定義とともにモジュールに保存し、GHCiにロードできる機能シグネチャです。

このシグネチャは、luckyを取得してIntegerを返す関数Stringを定義することを意味します。

ただし、GHCiをインタラクティブインタープリターとして使用して関数を作成する場合は、Haskellに関数の型を推測させることができます。 g .:

ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String
56

GHCIで試してみたい場合は、複数行のコマンドブロックを使用できます

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

:type lucky 
lucky :: Int -> String
7
Maqbool