Haskell中的运算符

功放

我写了以下函数

foldList :: (Double -> Double -> Double) -> [Double] -> Double
foldList op (x:t)
 | t == []     = x
 | otherwise   = (op) x (foldList op t)

而且效果很好。但是当我将最后一行更改为

  | otherwise  = x op (foldList op t)

它不再编译了。我对Haskell还是很陌生,但我想与运营商打交道

a op b

相当于

(op) a b

我是否必须将其op视为正常功能?如果是这样,在什么情况下会被视为操作员,为什么不在这里?

Ry-

运算符是带有符号名称的函数。默认情况下,它们是infix的,您可以通过将其包装在括号中来像其他函数一样使用它们。

a + b       (+) a b

具有标识符名称的函数(例如your op)可以通过用反引号将它们包装起来而用作infix

op a b      a `op` b

另请参阅https://wiki.haskell.org/Infix_operator

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章