2012-01-24 21 views
20

Ben boruları (<| ve |>) Ben OCaml içinde <| ve |> kullanabilir miyimOCaml'de boru kullanmak mümkün mü? F In #

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

olmadan yaşayamaz?

cevap

30

Bunlar OCaml 4.01'den beri kullanılabilir. Ancak, <| burada @@ olarak adlandırılmıştır, bu nedenle doğru operatör ilişkilendirmesine sahiptir.

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

Yoksa BatStd tanımlanan |> ve <| operatörleri olan, Ocaml batteries included kullanın:

Alternatif bunları kendiniz tanımlayabilirsiniz ya.

+2

güncelleştirmesi: 4.01.0 ''> stdlib'de bulunur ve '@' ',' | <'olarak tanımlanır. – nlucaroni

+0

@nlucaroni Teşekkürler! Boruları iletmeyi açıkça tamamlayan bir şey yerine neden @@ 'seçtiklerini merak ediyorum. ('<|' benim için en iyi seçenek gibi görünüyor, ama '| <' en azından analog glifleri kullanır. –

+1

Bu, dilbilgisinde gerekli olan ilişkilendirmeden dolayıdır. '' ', infix işlevlerini doğru ilişkilendirmeyle başlatmak için kullanılırken,' '' sol için kullanılır. Bu bir süre için standart olmuştur. Bakınız: http://stackoverflow.com/questions/6150551/ocaml-why-i-cant-use-this-operator-infix – nlucaroni

İlgili konular