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 を返したらそれを返して終わりにする