2012-01-13 41 views
6

我嘗試使用「let」來定義表達式定義,但我得到的只是錯誤。Tryhaskell.org支持的定義是什麼?

> let double x = x * x 
not an expression: `let double x = x * x' 

是否有一個特殊的命令,我必須使用或JavaScript編譯器不支持此功能?

+3

這很有趣,這個主題上的每個人似乎都認爲現在雙倍與平方一樣;) – Thomas 2012-01-13 23:11:07

+2

@Thomas:Haskell不關心你的花哨*「標準算術」*!這只是表現力! – ehird 2012-01-13 23:12:56

回答

9

事實上,它不支持定義;據推測,因爲它只是作爲一個基本的介紹,並且可能在兩行之間沒有任何關係。正如其使用hint所暗示的那樣,它只是評估表達式。與GHCi不同,它不會嘗試執行IO操作(謝天謝地!),而只是嘗試打印它們(因IO操作沒有Show實例而失敗)。您可以在一行上做let square x = x * x in square 42

順便說一句,Try Haskell does not使用JavaScript Haskell編譯器或類似的東西;它會與服務器通信以評估您輸入的表達式。總而言之,它是一個簡潔的概念證明,也是讓人們對Haskell感興趣的一個很好的初始鉤子,但對於任何真正的使用,它與GHCi相比並不適合。