是否可以在OCaml中使用管道?

cnd*_*cnd 20 syntax ocaml

在F#我不能没有管道(<||>)

let console(dashboard : Dashboard ref) = 
    let rec eat (command : string) =
        command.Split(' ','(',')') 
        |> Seq.filter(fun s -> s.Length <> 0)
        |> fun C ->
            (Seq.head C).ToUpper() |> fun head ->
Run Code Online (Sandbox Code Playgroud)

我可以使用<||>OCaml中?

LiK*_*Kao 30

这些是自OCaml 4.01以来可用的.但是,<|@@那里命名,因此它具有正确的运算符关联性.

或者,您可以自己定义它们:

let (|>) v f = f v
let (<|) f v = f v  (* or: *)
let (@@) f v = f v
Run Code Online (Sandbox Code Playgroud)

或者您使用包含的Ocaml电池,其中包含 BatStd中定义的|><|运算符.

  • update:在4.01.0中`|>`包含在stdlib中,`@@`定义与`| <`相同. (2认同)
  • 这是因为语法中必须具有关联性。“ @”用于启动具有右关联的中缀函数,而“ |”用于左。这已经有一段时间了。请参阅:http://stackoverflow.com/questions/6150551/ocaml-why-i-cant-use-this-operator-infix (2认同)