ghci で複数行のコマンドを入力する際に問題が発生します。
次の 2 行のコードはファイルから機能します。
addTwo :: Int -> Int -> Int
addTwo x y = x + y
しかし、ghci に入力すると、エラーが発生します:
<interactive>:1:1: error:
Variable not in scope: addTwo :: Int -> Int -> Int
コードを 内に配置することも試みました:{ ... :}
が、この例では機能しません。これは、行を 1 行に追加するだけであり、そうすべきではないためです。
私はWinGHCiバージョン2011.2.0.1を使用しています
ベストアンサー1
ほとんどの場合、型推論を利用してシグネチャを判別できます。あなたの例では、次のコードで十分です。
Prelude> let addTwo x y = x + y
型シグネチャ付きの定義が本当に必要な場合、または定義が複数行にまたがる場合は、ghci で次のように実行できます。
Prelude> :{
Prelude| let addTwo :: Int -> Int -> Int
Prelude| addTwo x y = x + y
Prelude| :}
Prelude> addTwo 4 7
11
これを 1 行にまとめることもできることに注意してください。
Prelude> let addTwo :: Int -> Int -> Int ; addTwo x y = x + y
ghciとのやり取りの詳細については、プロンプトでのインタラクティブな評価ドキュメントのセクション。