2016-01-28 70 views
0

我試圖複製本書「學習Haskell的好作品」的例子,使用letinHaskell - Let in expression

問題是,雖然我用相同的方式編寫了相同的代碼,但它不起作用,並顯示第二個變量中的第二個「=」失敗。

誰能幫助我解決這個問題?

cylinder :: (RealFloat a) => a ->a ->a 
cylinder r h = 
     let sideArea = 2*pi*r*h 
      topArea = pi*r^2 
     in sideArea + 2*topArea 
+2

什麼是確切的錯誤信息? –

+0

當通過'ghci'運行時,這對我有用... –

+13

這聽起來像是一個縮進問題。你在使用標籤嗎?用'-fwarn-tabs'運行GHC,如果它吠叫你,用空格替換標籤。 – dfeuer

回答

1

這爲我工作:

Prelude CA> let cylinder r h = 
    Prelude CA|  let sideArea = 2*pi*r*h 
    Prelude CA|   topArea = pi*r^2 
    Prelude CA|  in sideArea + 2*topArea 
    Prelude CA| 
    Prelude CA> cylinder 5 9 
    439.822971502571 

我想這只是一個缺口問題

<interactive>:48:5: parse error (possibly incorrect indentation)