2017-09-16 83 views
0

我想通過學習haskell書來學習haskell。我遇到了一個讓我困惑的功能,並希望尋找解釋。這個功能相當簡單。我不明白的是聲明函數類型時的第一行。什麼(RealFloat a)= & gt;一個 - >一個 - >一個嗎?他們爲什麼用分號分隔?haskell語法混淆 - 函數類型聲明

非常感謝。

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

'>'故意嗎?如果不是 - 那就是問題所在。 '>'是'''的HTML。類型簽名應該是'(RealFloat a)=> a - > a - > a'。 – Alec

+0

哦......你是對的,我正在閱讀保留了html符號的pdf版本......對不起我的無知。非常感謝你 – soulless

+0

用適當的'=>'和' - >'修正HTML語法。還要注意縮進很重要,'sideArea'和'topArea'必須在同一列開始,整個函數體必須更加縮進。 – chi

回答

2

HTML字符實體表示&xxx;其中xxx是一些有效的HTML字符代碼。具體而言,>是字符>的代碼,因爲它表示「大於」。

假設存在問題的HTML錯誤,類型聲明變得

cylinder :: (RealFloat a) => a -> a -> a 

它有什麼作用?

你讀出來,如「假設a是類型類RealFloat的實例,cylinder需要a型的兩個值,並返回a類型的值。你可能要考慮的術語‘鑽營’,以閱讀這些聲明。

它是什麼聲明函數類型。

爲什麼分號?

實際類型聲明中沒有分號。