haskell语法混乱——函数类型声明
我试图通过阅读《向你学习哈斯克尔》一书来学习哈斯克尔。我遇到了一个函数,它让我有点困惑,我想寻找一个解释。这个函数相当简单。我不明白的是声明函数类型时的第一行。什么是(RealFloat a)=>;a->a->a做什么?为什么它们用分号分隔 先谢谢你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
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
必须从同一列开始,并且整个函数体必须更加缩进。