「Haskellを学ぼう」チュートリアルを進めています。この部分にいます。
lucky :: (Integral a) => a -> String
この行を実行しようとすると、次のようになります。
<interactive>:1:1: Not in scope: `lucky'
私は何を間違えていますか?
これは機能コードではなく、機能定義とともにモジュールに保存し、GHCiにロードできる機能シグネチャです。
このシグネチャは、lucky
を取得してInteger
を返す関数String
を定義することを意味します。
ただし、GHCiをインタラクティブインタープリターとして使用して関数を作成する場合は、Haskellに関数の型を推測させることができます。 g .:
ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String
GHCIで試してみたい場合は、複数行のコマンドブロックを使用できます
:{
lucky :: Int -> String
lucky a = show(a)
:}
:type lucky
lucky :: Int -> String