Module Relude_Option
include Relude_Option_Instances;
let compose: option(('b => 'c)) => option(('a => 'b)) => option(('a => 'c));
module Semigroupoid = Relude_Option_Instances.Semigroupoid;let andThen: Semigroupoid.t('a, 'b) => Semigroupoid.t('b, 'c) => Semigroupoid.t('a, 'c);let map: ('a => 'b) => option('a) => option('b);
module Functor = Relude_Option_Instances.Functor;module BsFunctorExtensions = Relude_Option_Instances.BsFunctorExtensions;let flipMap: Functor.t('a) => ('a => 'b) => Functor.t('b);let void: Functor.t('a) => Functor.t(unit);let voidRight: 'a => Functor.t('b) => Functor.t('a);let voidLeft: Functor.t('a) => 'b => Functor.t('b);let flap: Functor.t(('a => 'b)) => 'a => Functor.t('b);let apply: option(('a => 'b)) => option('a) => option('b);
module Apply = Relude_Option_Instances.Apply;module BsApplyExtensions = Relude_Option_Instances.BsApplyExtensions;let applyFirst: Apply.t('a) => Apply.t('b) => Apply.t('a);let applySecond: Apply.t('a) => Apply.t('b) => Apply.t('b);let map2: ('a => 'b => 'c) => Apply.t('a) => Apply.t('b) => Apply.t('c);let map3: ('a => 'b => 'c => 'd) => Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t('d);let map4: ('a => 'b => 'c => 'd => 'e) => Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t('d) => Apply.t('e);let map5: ('a => 'b => 'c => 'd => 'e => 'f) => Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t('d) => Apply.t('e) => Apply.t('f);let tuple2: Apply.t('a) => Apply.t('b) => Apply.t(('a, 'b));let tuple3: Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t(('a, 'b, 'c));let tuple4: Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t('d) => Apply.t(('a, 'b, 'c, 'd));let tuple5: Apply.t('a) => Apply.t('b) => Apply.t('c) => Apply.t('d) => Apply.t('e) => Apply.t(('a, 'b, 'c, 'd, 'e));let mapTuple2: ('a => 'b => 'c) => (Apply.t('a), Apply.t('b)) => Apply.t('c);let mapTuple3: ('a => 'b => 'c => 'd) => (Apply.t('a), Apply.t('b), Apply.t('c)) => Apply.t('d);let mapTuple4: ('a => 'b => 'c => 'd => 'e) => (Apply.t('a), Apply.t('b), Apply.t('c), Apply.t('d)) => Apply.t('e);let mapTuple5: ('a => 'b => 'c => 'd => 'e => 'f) => (Apply.t('a), Apply.t('b), Apply.t('c), Apply.t('d), Apply.t('e)) => Apply.t('f);let pure: 'a => option('a);
module Applicative = Relude_Option_Instances.Applicative;module BsApplicativeExtensions = Relude_Option_Instances.BsApplicativeExtensions;let liftA1: ('a => 'b) => Applicative.t('a) => Applicative.t('b);let bind: option('a) => ('a => option('b)) => option('b);
module Monad = Relude_Option_Instances.Monad;module BsMonadExtensions = Relude_Option_Instances.BsMonadExtensions;let flatMap: ('a => Monad.t('b)) => Monad.t('a) => Monad.t('b);let flatten: Monad.t(Monad.t('a)) => Monad.t('a);let composeKleisli: ('a => Monad.t('b)) => ('b => Monad.t('c)) => 'a => Monad.t('c);let flipComposeKleisli: ('b => Monad.t('c)) => ('a => Monad.t('b)) => 'a => Monad.t('c);let liftM1: ('a => 'b) => Monad.t('a) => Monad.t('b);let when_: Monad.t(bool) => Monad.t(unit) => Monad.t(unit);let unless: Monad.t(bool) => Monad.t(unit) => Monad.t(unit);let align: option('a) => option('b) => option(Relude_Ior_Type.t('a, 'b));let alignWith: (Relude_Ior_Type.t('a, 'b) => 'c) => option('a) => option('b) => option('c);
module Semialign = Relude_Option_Instances.Semialign;module Align = Relude_Option_Instances.Align;let foldLeft: ('b => 'a => 'b) => 'b => option('a) => 'b;let foldRight: ('a => 'b => 'b) => 'b => option('a) => 'b;
module Foldable = BsBastet.Option.Foldable;module BsFoldableExtensions = Relude_Option_Instances.BsFoldableExtensions;let any: ('a => bool) => Foldable.t('a) => bool;let all: ('a => bool) => Foldable.t('a) => bool;let containsBy: ('a => 'a => bool) => 'a => Foldable.t('a) => bool;let contains: (module BsBastet.Interface.EQ with type t = 'a) => 'a => Foldable.t('a) => bool;let indexOfBy: ('a => 'a => bool) => 'a => Foldable.t('a) => option(int);let indexOf: (module BsBastet.Interface.EQ with type t = 'a) => 'a => Foldable.t('a) => option(int);let minBy: ('a => 'a => BsBastet.Interface.ordering) => Foldable.t('a) => option('a);let min: (module BsBastet.Interface.ORD with type t = 'a) => Foldable.t('a) => option('a);let maxBy: ('a => 'a => BsBastet.Interface.ordering) => Foldable.t('a) => option('a);let max: (module BsBastet.Interface.ORD with type t = 'a) => Foldable.t('a) => option('a);let countBy: ('a => bool) => Foldable.t('a) => int;let length: Foldable.t('a) => int;let size: Foldable.t('a) => int;let count: Foldable.t('a) => int;let forEach: ('a => unit) => Foldable.t('a) => unit;let forEachWithIndex: ('a => int => unit) => Foldable.t('a) => unit;let find: ('a => bool) => Foldable.t('a) => option('a);let findWithIndex: ('a => int => bool) => Foldable.t('a) => option('a);let toList: Foldable.t('a) => list('a);let toArray: Foldable.t('a) => array('a);
module FoldableSemigroupExtensions = Relude_Option_Instances.FoldableSemigroupExtensions;module FoldableMonoidExtensions = Relude_Option_Instances.FoldableMonoidExtensions;let foldMap: (module BsBastet.Interface.MONOID with type t = 'a) => ('b => 'a) => Foldable.t('b) => 'a;let foldWithMonoid: (module BsBastet.Interface.MONOID with type t = 'a) => Foldable.t('a) => 'a;let intercalate: (module BsBastet.Interface.MONOID with type t = 'a) => 'a => Foldable.t('a) => 'a;
module FoldableApplicativeExtensions = Relude_Option_Instances.FoldableApplicativeExtensions;module FoldableMonadExtensions = Relude_Option_Instances.FoldableMonadExtensions;module FoldableEqExtensions = Relude_Option_Instances.FoldableEqExtensions;module FoldableOrdExtensions = Relude_Option_Instances.FoldableOrdExtensions;let alt: option('a) => option('a) => option('a);let altLazy: option('a) => (unit => option('a)) => option('a);
module Semigroup_Any = Relude_Option_Instances.Semigroup_Any;module Monoid_Any = Relude_Option_Instances.Monoid_Any;module Alt = BsBastet.Option.Alt;let orElse: fallback:Alt.t('a) => Alt.t('a) => Alt.t('a);
module Plus = BsBastet.Option.Plus;module Alternative = BsBastet.Option.Alternative;module Traversable = Relude_Option_Instances.Traversable;let eqBy: ('a => 'a => bool) => option('a) => option('a) => bool;let eq: (module BsBastet.Interface.EQ with type t = 'a) => option('a) => option('a) => bool;
module Eq = Relude_Option_Instances.Eq;module Ord = Relude_Option_Instances.Ord;let showBy: ('a => string) => option('a) => string;let show: (module BsBastet.Interface.SHOW with type t = 'a) => option('a) => string;
module Show = BsBastet.Option.Show;module WithSemigroup = Relude_Option_Instances.WithSemigroup;module WithApplicative = Relude_Option_Instances.WithApplicative;include Relude_Option_Base;
let some: 'a => option('a);let none: option('a);let empty: option('a);let isSome: option('a) => bool;let isNone: option('a) => bool;let fold: 'b => ('a => 'b) => option('a) => 'b;let foldLazy: (unit => 'b) => ('a => 'b) => option('a) => 'b;let getOrElse: 'a => option('a) => 'a;let getOrElseLazy: (unit => 'a) => option('a) => 'a;let getOrThrow: option('a) => 'a;let orElse: fallback:option('a) => option('a) => option('a);let orElseLazy: fallback:(unit => option('a)) => option('a) => option('a);let tap: ('a => unit) => option('a) => option('a);let tapSome: ('a => unit) => option('a) => option('a);let tapNone: (unit => unit) => option('a) => option('a);let bitap: (unit => unit) => ('a => unit) => option('a) => option('a);let filter: ('a => bool) => option('a) => option('a);let keep: ('a => bool) => option('a) => option('a);let filterNot: ('a => bool) => option('a) => option('a);let reject: ('a => bool) => option('a) => option('a);
include Relude_Option_Specializations;
module OptionEqExtensions = Relude_Option_Specializations.OptionEqExtensions;module OptionOrdExtensions = Relude_Option_Specializations.OptionOrdExtensions;module String = Relude_Option_Specializations.String;module Int = Relude_Option_Specializations.Int;module Float = Relude_Option_Specializations.Float;module IO = Relude_Option_Specializations.IO;