Haskell 什么是&;你是说哈斯克尔?

Haskell 什么是&;你是说哈斯克尔?,haskell,Haskell,我试图从以下方面理解一个例子: 但是我不知道和是什么意思。而且,我似乎不能用谷歌搜索它 我也不知道~或是什么意思~但我想我会问其他问题 您很可能正在使用,定义为 (&) :: a -> (a -> b) -> b a & f = f a 它只是一个翻转版本的($),常用于GUI库和其他需要将特性和修改器“应用”到现有值的地方 textbox & onClick foo & enabled 看起来更好,而且通常比 enabled . onCli

我试图从以下方面理解一个例子:

但是我不知道
是什么意思。而且,我似乎不能用谷歌搜索它


我也不知道
~
是什么意思~
但我想我会问其他问题

您很可能正在使用,定义为

(&) :: a -> (a -> b) -> b
a & f = f a
它只是一个翻转版本的
($)
,常用于GUI库和其他需要将特性和修改器“应用”到现有值的地方

textbox & onClick foo & enabled
看起来更好,而且通常比

enabled . onClick foo $ textbox

从某种意义上说,它是倒着读的。要知道这行是关于什么的,你必须从右边开始。

它看起来像是在
Lens.Micro中定义的。
:参见haskell标签信息部分,“什么是函数foo/operator#$*?”:。这些是来自其中一个导入库的运算符。您可以通过阅读文档或询问ghci,例如在加载示例并执行
:info(&)
:info(?)
是一个很好的工具,可以找到这类问题的答案。它的定义非常简洁,仅将其称为翻转应用程序是犯罪的:
a&f=f a
感谢您添加它,我本应具备“几乎犯罪”的资格;)我暗自希望GHC做了一些奇怪的编译器优化,这样
a&f
就不会被精确地定义为
fa
,但似乎是这样。
enabled . onClick foo $ textbox