PureScript 有管道运算符吗?

Does PureScript have a pipe operator?

来自 F# 世界,我习惯使用 |> 将数据通过管道传输到函数中:

[1..10] |> List.filter (fun n -> n % 2 = 0) |> List.map (fun n -> n * n);

我假设受 Haskell 启发的 PureScript 也有类似的东西。

如何在 PureScript 中使用管道运算符?

是的,您可以使用 Prelude 中定义的 #

这是您的示例,使用 #:

重写

http://try.purescript.org/?gist=0448c53ae7dc92278ca7c2bb3743832d&backend=core

module Main where

import Prelude
import Data.List ((..))
import Data.List as List

example = 1..10 # List.filter (\n -> n `mod` 2 == 0) 
                # map (\n -> n * n)

这是定义用于 PureScript 的 |> 运算符的一种方法;它的定义方式与 # 完全相同 - 即具有相同的优先级和关联性:-

pipeForwards :: forall a b. a -> (a -> b) -> b
pipeForwards x f = f x
infixl 1 pipeForwards as |>