haskell语法混乱——函数类型声明

haskell语法混乱——函数类型声明,haskell,syntax,functional-programming,Haskell,Syntax,Functional Programming,我试图通过阅读《向你学习哈斯克尔》一书来学习哈斯克尔。我遇到了一个函数,它让我有点困惑,我想寻找一个解释。这个函数相当简单。我不明白的是声明函数类型时的第一行。什么是(RealFloat a)=>;a->a->a做什么?为什么它们用分号分隔 先谢谢你 cylinder :: ( RealFloat a) =& gt; a -> a -> a cylinder r h = let sideArea = 2 * pi * r * h t

我试图通过阅读《向你学习哈斯克尔》一书来学习哈斯克尔。我遇到了一个函数,它让我有点困惑,我想寻找一个解释。这个函数相当简单。我不明白的是声明函数类型时的第一行。什么是(RealFloat a)=>;a->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

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

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

cylinder :: (RealFloat a) => a -> a -> a
它有什么作用

您可以像“假设
a
是类型类
RealFloat
的一个实例,
cyland
获取两个
a
类型的值,并返回一个
a
类型的值。您可能需要研究术语“currying”来读取这些声明

它所做的是声明函数类型

为什么用分号


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

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

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

cylinder :: (RealFloat a) => a -> a -> a
它有什么作用

您可以像“假设
a
是类型类
RealFloat
的一个实例,
cyland
获取两个
a
类型的值,并返回一个
a
类型的值”这样读取它。您可能需要研究术语“currying”来阅读这些声明

它所做的是声明函数类型

为什么用分号


实际类型声明中没有分号

是故意的吗?如果不是,那就是问题所在
的HTML。类型签名应该是
(RealFloat a)=>a->a->a
。。。你是对的,我正在阅读pdf版本,它保留了html符号。。。对不起我的无知。非常感谢您使用正确的
=>
->
来修改HTML语法。还要注意缩进很重要,
侧区
顶区
必须从同一列开始,并且整个函数体必须更加缩进。
是故意的吗?如果不是,那就是问题所在
的HTML。类型签名应该是
(RealFloat a)=>a->a->a
。。。你是对的,我正在阅读pdf版本,它保留了html符号。。。对不起我的无知。非常感谢您使用正确的
=>
->
来修改HTML语法。还要注意缩进很重要,
sideArea
topArea
必须从同一列开始,并且整个函数体必须更加缩进。