Ben*_*jol 5 f# tuples pipe operators
我知道(||>)
哪个了(a' * 'b) -> ('a -> b' -> 'c) -> 'c
但我发现这非常有用,并想知道我是否重新发明了轮子:
// ('a * 'a) -> ('a -> 'b) -> ('b * 'b)
let inline (|>>) (a,b) f = (f a, f b)
Run Code Online (Sandbox Code Playgroud)
(*它可能发生,我ceil
半小时前才发现这个功能!)
不,它没有。
但是,如果您使用 FParsec,您将经常遇到它的变体。这是 FParsec 文档中的类型签名:
val (|>>): Parser<'a,'u> -> ('a -> 'b) -> Parser<'b,'u>
Run Code Online (Sandbox Code Playgroud)
我认为该库有一组精心设计的运算符,它们也可以推广用于其他目的。可以在此处找到 FParsec 运算符列表。
我做了一些挖掘;|>>
运算符似乎没有内置的 Haskell 对应物,尽管它很容易使用Control.Arrow
.