2012-01-24 10 views
20

F#では私はOCamlでパイプを使用することはできますか?

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 -> 

私はOCamlの中で<||>を使用することはできます(<||>)パイプなしでは生きていけませんか?

答えて

30

これらはOCaml 4.01以降で利用できます。ただし、<|の名前は@@なので、正しい演算子の関連性があります。

また、あなたはそれらを自分で定義することができ、次のいずれか

let (|>) v f = f v 
let (<|) f v = f v (* or: *) 
let (@@) f v = f v 

それともOcaml batteries includedを使用し、BatStdで定義され|><|演算子を有しています。

+2

update:4.01.0では '|>'はstdlibに含まれ、 '@@'は '| <'と同じように定義されています。 – nlucaroni

+0

@nlucaroniありがとう!私はなぜ彼らが '' @@'を選んだのだろうと思っています。 ( '<|'は私にとって最良の選択肢のようですが、 '| <'は少なくとも類似のグリフを使用しています)。 –

+1

それは文法に必要な連想性のためです。 '@'は右結合を伴う挿入関数を開始するために使われ、 '|'は左のために使われます。これはしばらくの間標準となっています。参照してください:http://stackoverflow.com/questions/6150551/ocaml-why-i-cant-use-this-operator-infix – nlucaroni

関連する問題