Bạn chỉ cần xác định biểu tượng cho các ứng dụng như vậy:
let (@@@) f x = f x ;;
Và sau đó
let f x = x * 4;;
let g y = y + 2;;
let a = f @@@ g 3;;
print_int a;;
không in 20.
Lưu ý rằng phiên bản tiếp theo của OCaml (3.13 hay 4.00) sẽ cung cấp nguyên thủy được xây dựng trong các ứng dụng mà tránh tạo ra các chức năng áp dụng một phần trung gian:
external (@@@) : ('a -> 'b) -> 'a -> 'b = "%apply"
external (|>) : 'a -> ('a -> 'b) -> 'b = "%revapply"
Điều cuối cùng đối diện với %apply
:
print_int (3 |> g |> f);;
Lưu ý rằng bạn không thể sử dụng ($) vì nó là trái kết hợp trong định nghĩa của bộ phân tích OCaml:
let ($) f x = f x ;;
let a = f $ g 3;; (* ok ! ??? *)
let a = f $ g $ g 3;; (* ERROR -> g is not an integer,
because OCaml computes (f $ g) first *)
Nguồn
2012-02-19 07:33:21
Bạn chỉ có thể xác định một nhà điều hành '$' như trong Haskell: hãy ($) fx = fx ;; – aneccodeal
Không, thực sự, bạn không thể sử dụng '$'. Nó hoạt động cho ví dụ cơ bản này, nhưng không phải nếu bạn thử 'f $ g $ h x' –