当您编写稍微复杂的函数时,我注意到 $
被大量使用,但我不知道它的作用是什么?
最佳答案
$
是中缀“应用程序”。其定义为
($) :: (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]
关于haskell - $ 在 Haskell 中意味着什么/做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19521246/