2014-11-01 117 views
1

我在Windows 7上使用ghci編譯器與版本7.8.3。我得到錯誤消息顯示輸入` - >'解析錯誤。在haskell中,我有以下代碼用於lambda表達式。haskell得到解析錯誤輸入` - >'

附加= \ XY - > X + Y

+0

請注意'= \'是一個運算符。既然你想給名稱'add'分配一個lambda表達式,你需要一個空格:'= \'。 – 2014-11-01 18:51:25

回答

5

ghci交互定義一個函數,你必須使用綁定它let這樣的:

let add = \x y -> x + y 
+1

如果它是全局聲明的函數,則不適用。如果是這樣的話,它應該只是用加法形式'add x y = x + y',或者只是'add =(+)'來寫。 – Carcigenicate 2014-11-01 18:13:22

+0

另外,'='和'\'必須用空格分隔,因爲'= \'是一個合法的操作符名稱。 – 2014-11-01 18:13:36

2

我只是寫:

add = \x y -> x + y 

main = do 
    print $ add 1 2 

它編譯並輸出3.

除非喲烏爾意圖是,雖然練習unsugared代碼,我會寫出來的:

add x y = x + y 

或者

add = (+) 

這是「點免費」的形式。