haskell - 封闭括号内的美元符号

标签 haskell syntax operator-keyword dollar-sign

这个问题在这里已经有了答案:





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/

相关文章:

linux - 如何从 Haskell 为所有用户设置文件权限

haskell - Haskell 中 Futamura 投影的证明

haskell - 在 ghci 中指定 "load"操作的搜索路径

python - OR 语句处理两个 != 子句 Python

c++ - 向 C++ 中的结构数组添加元素遇到 "error no match for ‘operator=’"

c++ - 这条代码中这条毯子是什么意思?

parsing - Haskell:尽管文件中有更多输入,但解析文件在第一个表达式后完成

c++ - 在 C++ 中通过引用传递对象

python - Ruby 到 Python 的语法混淆

javascript - 是否有扩展核心 js 类的任何好的 underscore.js 替代方案?