haskell语法混淆 - 函数类型声明

问题描述:

我想通过学习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

HTML字符实体表示&xxx;其中xxx是一些有效的HTML字符代码。具体而言,>是字符>的代码,因为它表示“大于”。

假设存在问题的HTML错误,类型声明变得

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

它有什么作用?

你读出来,如“假设a是类型类RealFloat的实例,cylinder需要a型的两个值,并返回a类型的值。你可能要考虑的术语‘钻营’,以阅读这些声明。

它是什么声明函数类型。

为什么分号?

实际类型声明中没有分号。