这个问题在这里已经有了答案:
What does $ mean/do in Haskell?
(2 个回答)
5年前关闭。
Websocket snippet有一个声明,在这样的封闭括号内有美元符号,
any ($ fst client)
由于haskellers 使用
$
签名而不是括号,为什么我们需要括号?为什么会有
$
括号之间的符号?我试着看看
$
是一个通过做的功能Prelude>:t $
但它抛出了错误,
parse error on input $
最佳答案
在 Haskell 中,运算符只是具有由符号组成的名称并默认使用中缀的普通函数。您可以像普通标识符一样使用它们,将它们括在括号中:
λ> :t (+)
(+) :: Num a => a -> a -> a
$
本身就是一个操作符。它代表功能应用,定义如下:f $ x = f x
您可以像
(+)
一样获取它的类型:λ> :t ($)
($) :: (a -> b) -> a -> b
Haskell 运算符也可以像普通函数一样部分应用,方法是将它们用括号括起来,一侧有参数。例如,
(+ 1)
与 \ x -> x + 1
相同和 (1 +)
与 \x -> 1 + x
相同.这适用于
$
也是,所以($ fst client)
与 \ f -> f $ fst client
相同或只是 \ f -> f (fst client)
.您拥有的代码片段会检查给定 fst client
的任何函数列表是否返回 true .
关于haskell - 封闭括号内的美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706448/