当您编写稍微复杂的函数时,我注意到$
用得很多,但我不知道它的作用是什么?
$
是中缀“应用程序”。它定义为
($) :: (a -> b) -> a -> b
f $ x = f x
-- or
($) f x = f x
-- or
($) = id
它对于避免额外的括号很有用:f (g x) == f $ g x
.
它的一个特别有用的位置是“尾随 lambda 体”,例如
forM_ [1..10] $ \i -> do
l <- readLine
replicateM_ i $ print l
相比
forM_ [1..10] (\i -> do
l <- readLine
replicateM_ i (print l)
)
或者,棘手的是,当表达“将此参数应用于任何函数”时,它有时会显示为分段
applyArg :: a -> (a -> b) -> b
applyArg x = ($ x)
>>> map ($ 10) [(+1), (+2), (+3)]
[11, 12, 13]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)