haskell - $ 在 Haskell 中意味着什么/做什么?

标签 haskell syntax operators dollar-sign

当您编写稍微复杂的函数时,我注意到 $ 被大量使用,但我不知道它的作用是什么?

最佳答案

$ 是中缀“应用程序”。其定义为

($) :: (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/

相关文章:

jquery - wordpress + jquery 语法错误

c - "++"操作在 C 中是原子的吗?

haskell - 如果函数的参数中未使用类型,如何指定函数的类型?

ruby - "$&"在 Ruby 中是什么意思

haskell - 我怎样才能让这个 Haskell ADT 派生 Show?

python - 是我的人工编译器 : What is wrong with this Python 2. 5 代码吗?

javascript - 了解JavaScript逗号运算符

Java 运算符优先级准则

performance - 使用 Haskell 在功能上将数据集相互比较一次

math - 计算有限域中的乘法逆元