编写Haskell程序时,我发现自己需要这样的操作符。
(|>) :: a -> (a -> b) -> b
(|>) = flip ($)
infixl 0 |>
我认为当将许多函数粘合在一起时,它非常有用。
tText cs = someFun cs |>
lines |>
map (drop 4) |>
reverse
我更喜欢使用|>
而不是.
,因为使用|>
时应用函数的顺序与编写函数的顺序相同。
tText' cs = reverse .
map (drop 4) .
lines .
someFun $ cs
问题是:这个符号 (|>
) 在 Prelude
或其他基本库中已经存在吗?重新实现简单的东西是我想避免的愚蠢行为。
Hoogle 搜索没有帮助。我找到的最接近的东西是 >>>
(箭头),但似乎有些过度。
>>>
有这个功能。还有一个关于为什么 F# 使用|>
而 Haskell 使用.
和$
的 SO(StackOverflow)问题,这非常相关。(也要注意,仅供娱乐的是,使用.
或>>>
,你可以将你的函数写成无需传入参数:tText = reverse . map (drop 4) . lines . someFun
或者tText = someFun >>> lines >>> map (drop 4) >>> reverse
。) - Antal Spector-Zabuskydo
符号始终向前。 - leftaroundabouttText cs = ($ cs) $ someFun >>> lines >>> map (drop 4) >>> reverse
- Will Ness