Ben*_*ino 37 haskell operators dollar-sign
一个简单的问题是,Haskell中的运算符是否与美元符号类似,但优先于左侧.IE而不是
f (x 1)
Run Code Online (Sandbox Code Playgroud)
被写成
f $ x 1
Run Code Online (Sandbox Code Playgroud)
我想把它写成
x 1 $ f
Run Code Online (Sandbox Code Playgroud)
这纯粹是一种风格.我按顺序运行了一系列函数,如果我可以将它们写成左边写入以匹配我读到的左边写,那将会很好.如果有运营商吗?
[更新]有几个人问我是否不能定义自己的.作为回答,我想在重新发明轮子之前检查是否有现有的操作员.
sas*_*nin 30
在Haskell中,您可以使用flip更改任何二元函数或运算符的参数顺序:
ghci> let (|>) = flip ($)
ghci> 3 |> (+4) |> (*6)
42
Run Code Online (Sandbox Code Playgroud)
ZyX*_*ZyX 20
我不知道,是否有一个标准的操作员,但是什么阻止你自己编写?这适用于ghci:
Prelude> let a $> b = b a
Prelude> 1 $> (+2)
3
Prelude> sum [1, 2] $> (+2)
5
Prelude> map (+2) [1, 2] $> map (+3)
[6,7]
Run Code Online (Sandbox Code Playgroud)
更新:在hoogle上搜索a -> (a -> b) -> b(这是该运算符的类型)没有任何用处.
Jos*_*Lee 10
这个组合子在数据 - 鸟舍包中定义(舌头颊):
Prelude Data.Aviary.BirdsInter> 1 `thrush` (+2)
Loading package data-aviary-0.2.3 ... linking ... done.
3
Run Code Online (Sandbox Code Playgroud)
虽然实际上使用那个包是一件相当愚蠢的事情,但阅读源是有趣的,并且揭示了这个组合器是通过flip id(或者,在鸟类学的说法中cardinal idiot)的神奇咒语形成的.
| 归档时间: |
|
| 查看次数: |
7653 次 |
| 最近记录: |