2012-01-24 4 views

ответ

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: in 4.01.0 '|>' входит в stdlib, а '@@' определяется так же, как' | <'. – nlucaroni

+0

@nlucaroni спасибо! Интересно, почему они выбрали '@@' вместо чего-то явно дополняющего передовые трубопроводы? ('<|' кажется лучшим вариантом для меня, но '| <' по крайней мере использует аналогичные глифы. –

+1

Это связано с ассоциативностью, необходимой в грамматике. '@' используется для запуска функций infix с правильной ассоциацией, а '|' используется для левой. Это был стандарт на некоторое время. См. Http://stackoverflow.com/questions/6150551/ocaml-why-i-cant-use-this-operator-infix – nlucaroni