Haskell点运算符 [英] Haskell dot operator
本文介绍了Haskell点运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试在Haskell中开发一个简单的平均函数。
这似乎工作:
lst = [1,3]
x = fromIntegral (sum lst)
y = fromIntegral(length lst)
$ b $ = x / y
但为什么下面的版本不工作?
lst = [1,3]
x = fromIntegral.sum lst
y = fromIntegral.length lst
z = x / y
解决方案
你被运算符haskell的优先规则绊倒了。 >当你写
x = fromIntegral.sum lst
$ p $ > b
Haskell认为它与
x = fromIntegral。(总和lst)
你打算写的是:
x =(fromIntegral.sum)lst
I try to develop a simple average function in Haskell. This seems to work:
lst = [1, 3] x = fromIntegral (sum lst) y = fromIntegral(length lst) z = x / y
But why doesn't the following version work?
lst = [1, 3] x = fromIntegral.sum lst y = fromIntegral.length lst z = x / y
解决方案You're getting tripped up by haskell's precedence rules for operators, which are confusing.
When you write
x = fromIntegral.sum lst
Haskell sees that as the same as:
x = fromIntegral.(sum lst)
What you meant to write was:
x = (fromIntegral.sum) lst
这篇关于Haskell点运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文