我试图通过学习你的哈克尔书来学习哈斯克尔。我遇到了一个令我困惑的功能,想找一个解释。这个功能相当简单。我不明白的是声明函数类型时的第一行。什么(RealFloat a)=& GT; a - > a - >一个吗?他们为什么用分号隔开?
提前多多感谢。
cylinder :: ( RealFloat a) =& gt; a -> a -> a
cylinder r h =
let sideArea = 2 * pi * r * h
topArea = pi * r ^2
in sideArea + 2 * topArea
答案 0 :(得分:2)
HTML字符实体表示为&xxx;
,其中xxx
是一些有效的HTML字符代码。具体而言,>
是字符>
的代码,因为它意味着"大于"。
假设问题中存在HTML错误,则类型声明变为
cylinder :: (RealFloat a) => a -> a -> a
它做了什么?
你读出来就像#34;假设a
是类RealFloat
的一个实例,cylinder
采用两个类型为a
的值并返回一个值类型为a
。您可能希望查看术语" currying"阅读这些声明。
它的作用是声明函数类型。
分号为什么用分号?
实际的类型声明中没有分号。