我写了以下函数
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
视为正常功能?如果是这样,在什么情况下会被视为操作员,为什么不在这里?
运算符是带有符号名称的函数。默认情况下,它们是infix的,您可以通过将其包装在括号中来像其他函数一样使用它们。
a + b (+) a b
具有标识符名称的函数(例如your op
)可以通过用反引号将它们包装起来而用作infix 。
op a b a `op` b
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句