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

时间:2017-09-16 06:41:02

标签: haskell syntax functional-programming

我试图通过学习你的哈克尔书来学习哈斯克尔。我遇到了一个令我困惑的功能,想找一个解释。这个功能相当简单。我不明白的是声明函数类型时的第一行。什么(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

1 个答案:

答案 0 :(得分:2)

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

假设问题中存在HTML错误,则类型声明变为

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

它做了什么?

你读出来就像#34;假设a是类RealFloat的一个实例,cylinder采用两个类型为a的值并返回一个值类型为a。您可能希望查看术语" currying"阅读这些声明。

它的作用是声明函数类型。

  分号为什么用分号?

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