2017-04-13 61 views
0

我在我的Mac嘗試Haskell和我吃驚的是,當我定義的函數,我得到了一個錯誤:哈斯克爾初學者的錯誤與GHCI

Prelude System.IO> :set prompt "ghci> " 
ghci> addMe :: Int -> Int -> Int 

<interactive>:11:1: error: 
    Variable not in scope: addMe :: Int -> Int -> Int 
ghci> 

我如何定義在ghci的功能呢?

+0

使用多行輸入或顯式分號,如[GHCi *中特殊情況下的函數定義](http://stackoverflow.com/q/42593284/2751851)所示。 – duplode

+3

我發現把所有的定義放在一個文件中比較容易,然後':load'到ghci中。 – melpomene

+0

請考慮[IHaskell](https://github.com/gibiansky/IHaskell),它將直接在解釋器中輸入的直接反饋體驗與適當源文件的結構和備份功能相結合。 – leftaroundabout

回答

0

如果你想一個類型簽名添加到GHCI一個定義,您可以通過使用多輸入通過:set +m:{ ... :},如GHC Users Guide描述指定它,或者用分號,如:

mulme x y = [x*y| x /= 0, y/= 0]; mulme :: Int -> Int -> [Int] 
+0

請注意,我們通常使用'Maybe'而不是總是隻有一個元素的列表。通過這樣做,上面定義的右邊可能會變成if(x/= 0 && y/= 0),然後是Just(x * y)else Nothing'。 – duplode