2012-01-24 23 views
20

Trong F # Tôi không thể sống thiếu ống (<||>)Có thể sử dụng ống trong OCaml không?

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

Tôi có thể sử dụng <||> trong OCaml?

Trả lời

30

Chúng có sẵn từ OCaml 4,01. Tuy nhiên, <| có tên là @@ ở đó, vì vậy nó có sự kết hợp nhà điều hành chính xác.

Ngoài ra, bạn có thể xác định họ tự hỏi:

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

Hoặc bạn sử dụng Ocaml batteries included, trong đó có các |><| khai thác theo quy định tại BatStd.

+2

cập nhật: trong 4.01.0 '|>' được bao gồm trong stdlib và '@@' được định nghĩa giống như '| <'. – nlucaroni

+0

@nlucaroni cảm ơn! Tôi tự hỏi tại sao họ lại chọn '@@' thay vì cái gì đó rõ ràng là bổ sung cho việc chuyển tiếp đường ống? ('<|' có vẻ là lựa chọn tốt nhất đối với tôi, nhưng '| <' ít nhất cũng sử dụng glyphs tương tự). –

+1

Đó là vì sự kết hợp cần thiết trong ngữ pháp. '@' được sử dụng để bắt đầu các hàm infix với sự kết hợp đúng, trong khi '|' được sử dụng cho bên trái. Đây là tiêu chuẩn trong một thời gian. Xem: http://stackoverflow.com/questions/6150551/ocaml-why-i-cant-use-this-operator-infix – nlucaroni

Các vấn đề liên quan