簡體   English   中英

haskell中運算符的$使用規則

[英]rules of operator's $ usage in haskell

我嘗試使用$運算符,然后發現一個奇怪的地方,我不知道發生了什么。

f = double $ 3+4

但這不是

f xs = xs !! $ length xs - 1

運算符$只能出現在函數名稱之后而不出現在運算符之后嗎? 如果是這樣,有一種方法可以在不帶括號的情況下編寫以下函數

f xs = xs !! (length xs - 1)

您不能將兩個運算符彼此相鄰,這是無效的語法。 這適用於所有操作員。 所以xs !! $ length xs - 1 xs !! $ length xs - 1就是行不通的。 在沒有采取一些不值得的技巧並使代碼的可讀性降低的情況下,沒有一種擺脫該語句中的括號的好方法。


不過, $運算符不必出現在函數名稱之后

> let add x y = x + y
> add 1 $ add 2 $ add 3 4

Haskell中綴表示法有問題,請避免這樣

f xs = (!!) xs $ length xs - 1

括號將中綴運算符轉換為前綴函數。

暫無
暫無

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

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