Module Am_Ops (.ml)


module Am_Ops: sig .. end
пропустить значение последовательно через функции: 123 >> string_of_int >> print_string

val forA : 'a array -> ('a -> unit) -> unit
val forL : 'a list -> ('a -> unit) -> unit
val forStream : 'a Stream.t -> ('a -> unit) -> unit
val extern_identity : 'a -> 'a
val identity : 'a -> 'a
val some : 'a -> 'a option
val (>>) : 'a -> ('a -> 'b) -> 'b
пропустить значение последовательно через функции: 123 >> string_of_int >> print_string
val (&) : ('a -> 'b) -> 'a -> 'b
применить значение к функции: print_string & string_of_int & 123

NB: оператор "&" является ключевым словом в jocaml

Если попробовать объявить "let ( $ ) f x = f x", то полученный оператор будет левоассоциативным, что нежелательно в данном случае.

val (%) : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b
композиция функций: let print_int = print_string % string_of_int let print_int = print_string $ string_of_int let print_int_sum = print_string % string_of_int %% ( + ) let print_int_sum = print_string %% (string_of_int %% ( + ) ) let for_all pred = not % List.exists (not % pred) let for_all2 pred = not %% List.exists2 (not %% pred)

Операторы левоассоциативны, у оператора ($) приоритет ниже, чем у (%), и ниже, чем у арифметических операторов.

val ($) : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b
val (%%) : ('a -> 'b) -> ('c -> 'd -> 'a) -> 'c -> 'd -> 'b
val (%%%) : ('a -> 'b) -> ('c -> 'd -> 'e -> 'a) -> 'c -> 'd -> 'e -> 'b
val ( /* ) : 'a -> ('a -> 'b) -> 'b
применить инфиксную функцию: 123L /* Int64.add */ 234L
val ( */ ) : ('a -> 'b) -> 'a -> 'b
module Int_as_int: sig .. end
module Float_as_float: sig .. end

TODO core, pa_do, pa_openin
module Int32_as_int: sig .. end
module Int64_as_int: sig .. end
module Int_as_float: sig .. end
module Float_as_int: sig .. end
module Int32_as_float: sig .. end
module Int64_as_float: sig .. end
module Int_as_int_overflow: sig .. end