簡體   English   中英

Haskell中的運算符

[英]Operators in 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視為正常功能? 如果是這樣,在什么情況下會被視為操作員?為什么不呢?

運算符是帶有符號名稱的函數。 默認情況下,它們是不固定的,您可以通過將其包裝在括號中來像其他函數一樣使用它們。

a + b       (+) a b

帶有標識符名稱的函數(例如op )可以通過用反引號將它們包裝起來而用作infix。

op a b      a `op` b

另請參閱https://wiki.haskell.org/Infix_operator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM