[Haskell] $

函數(shù)“$”稱為function application operator,定義如下:

($) :: (a -> b) -> a -> b
f $ x = f x

與函數(shù)調(diào)用不同的是,函數(shù)調(diào)用具有高優(yōu)先級,而“$”具有最低優(yōu)先級
函數(shù)調(diào)用具有左結(jié)合性,而“$”具有右結(jié)合性。

f a b c = ((f a) b) c
f $ g $ h $ x = f $ (g $ (h $ x))

使用“$”可以減少括號。

例如:

sum (map sqrt [1..130]) = sum $ map sqrt [1..130]
sqrt (3 + 4 + 9) = sqrt $ 3 + 4 + 9
sum (filter (> 10) (map (* 2) [2..10])) = sum $ filter (> 10) $ map (* 2) [2..10]

我們可以等價的認(rèn)為,把“$”替換成一個左括號,然后在表達(dá)式的最有表加上一個右括號。

除了可以減少括號,“$”還可以把函數(shù)調(diào)用當(dāng)做一個函數(shù)來對待。

($ 3) :: (Int -> b) -> b

它是一個函數(shù),接受一個函數(shù)作為參數(shù),返回這個參數(shù)函數(shù)作用到3的結(jié)果。

> map ($ 3) [(4 +), (10 *), (^ 2), sqrt]
[7.0, 30.0, 9.0, 1.7320508075688772]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容