2017-09-16 15 views
0

私はあなたがhaskellの本を学ぶことを通って、haskellを学ぼうとしています。私はちょっと私を混乱させ、説明を探してみたいという機能に出くわしました。この関数はかなり簡単です。私が理解できないのは、関数型を宣言するときの最初の行です。何が(RealFloat a)= & gt; a - > a - > a?なぜセミコロンで区切られていますか?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は、いくつかの有効なHTMLの文字コードである&xxx;を付しています。具体的には、>は、文字「>」のコードです。「より大きい」という意味です。

問題になっているHTMLの間違いがあると仮定すると、型宣言は

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

それが何をするのかになり?

あなたが好きそれを読み出す「cylinderaを仮定すると、型クラスRealFloatのインスタンスでは、タイプaの2つの値を取り、タイプaの値を返します。あなたが長期に見たいと思うかもしれません 『にカリー化』これらの宣言を読んで。それは何

は、関数の型を宣言することです。

なぜセミコロン?

実際の型宣言にセミコロンはありません。