package travesty
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=216c920c872cef2d52fa58e3c49826766a2cf6f2233e64937f18c46c0c5c5388
sha512=3b4f76794666aa3fb16c3639479790df3478a79e6f582b3e66b144e57df26a76580499961dd374f4fb6f3bd2dd7506e2725ed1242bada9deb14eb1916cacd18f
doc/travesty.base_exts/Travesty_base_exts/Fn/index.html
Module Travesty_base_exts.FnSource
Miscellaneous function combinators.
Fn contains various higher-order functions in the style of Base's Fn module.
Constant predicates
These are convenience shorthands for Base.Fn.const.
always x is true.
never x is false.
Pointwise liftings of operators
These complement Base.Fn.non.
conj f g lifts && over predicates f and g. It is short-circuiting: g is never called if f returns false.
Examples:
let is_zero = Int.(conj is_non_negative is_non_positive) (* Short-circuiting: *)
conj always (fun () -> failwith "oops") () ;
(* --> exception *)
conj never (fun () -> failwith "oops") ()
(* --> false *)disj f g lifts || over predicates f and g. It is short-circuiting: g is never called if f returns true.
Examples:
let is_not_zero = Int.(disj is_negative is_positive) (* Short-circuiting: *)
disj never (fun () -> failwith "oops") () ;
(* --> exception *)
disj always (fun () -> failwith "oops") ()
(* --> false *)f &&& g is conj f g.
f ||| g is disj f g.
Miscellaneous combinators
on lift x y ~f lifts a binary function f using the lifter lift. It does the same thing as the `on` function from Haskell, but with arguments flipped to make sense without infixing.
Effectively, it's Base.Comparable.lift, but with a slightly different signature.
Example:
let ints = on fst ~f:Int.equal (42, "banana") (42, "apple") in
let strs = on snd ~f:String.equal (42, "banana") (42, "apple") in
(ints, strs)
(* --> true, false *)F# style function composition operator
This is in a separate module to reduce the ambiguity caused by its use.