Haskell点运算符 [英] Haskell dot operator

查看:244
本文介绍了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 
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆