Module Util__.Combinator

val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
val id : 'a -> 'a
val const : 'a -> 'b -> 'a
val curry : (('a * 'b) -> 'c) -> 'a -> 'b -> 'c
val uncurry : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c
val first : ('a -> 'b) -> ('a * 'c) -> 'b * 'c
val second : ('a -> 'b) -> ('c * 'a) -> 'c * 'b
val both : ('a -> 'b) -> ('a * 'a) -> 'b * 'b
val pair : 'a -> 'b -> 'a * 'b
val swap : ('a * 'b) -> 'b * 'a
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 option -> ('a -> 'b option) -> 'b option
val let* : 'a option -> ('a -> 'b option) -> 'b option
val (<$>) : ('a -> 'b) -> 'a option -> 'b option
val let+ : 'a option -> ('a -> 'b) -> 'b option
val (<|>) : 'a option -> (unit -> 'a option) -> 'a option
val one_of : ('a -> 'b option) -> 'a list -> 'b option

f を適用してどれか一つでも Some を返したらそれを返して終わりにする

val maybe : 'a -> 'a option -> 'a
val (<::>) : 'a -> 'a list option -> 'a list option

monadic cons

val foldM : ('a -> 'b -> 'a option) -> 'a -> 'b list -> 'a option

monadic fold_left

  • f を適用して,Some が帰ってきたら fold を続ける.
  • もし一度でも None が帰ってきたら,None を返す