Stuff
- Package
 - purescript-stuff
 - Repository
 - rightfold/purescript-stuff
 
#logWarning Source
logWarning :: forall m. MonadIOSync m => String -> m Unit#dlmap Source
dlmap :: forall p c b a. Profunctor p => (a -> b) -> p b c -> p a c#drmap Source
drmap :: forall p c b a. Profunctor p => (b -> c) -> p a b -> p a c#compose2 Source
compose2 :: forall t99 t98 t102 t101 t100. Semigroupoid t99 => t99 t101 t100 -> (t98 -> t99 t102 t101) -> t98 -> t99 t102 t100#compose3 Source
compose3 :: forall t94 t93 t92 t91 t90 t86. Semigroupoid t91 => t91 t93 t92 -> (t86 -> t90 -> t91 t94 t93) -> t86 -> t90 -> t91 t94 t92#compose4 Source
compose4 :: forall t82 t81 t80 t79 t78 t74 t70. Semigroupoid t79 => t79 t81 t80 -> (t70 -> t74 -> t78 -> t79 t82 t81) -> t70 -> t74 -> t78 -> t79 t82 t80#compose5 Source
compose5 :: forall t66 t65 t64 t63 t62 t58 t54 t50. Semigroupoid t63 => t63 t65 t64 -> (t50 -> t54 -> t58 -> t62 -> t63 t66 t65) -> t50 -> t54 -> t58 -> t62 -> t63 t66 t64Re-exports from Control.Alt 
#Alt Source
class (Functor f) <= Alt f The Alt type class identifies an associative operation on a type
constructor. It is similar to Semigroup, except that it applies to
types of kind * -> *, like Array or List, rather than concrete types
String or Number.
Alt instances are required to satisfy the following laws:
- Associativity: 
(x <|> y) <|> z == x <|> (y <|> z) - Distributivity: 
f <$> (x <|> y) == (f <$> x) <|> (f <$> y) 
For example, the Array ([]) type is an instance of Alt, where
(<|>) is defined to be concatenation.
Instances
Re-exports from Control.Alternative 
#Alternative Source
class (Applicative f, Plus f) <= Alternative f The Alternative type class has no members of its own; it just specifies
that the type constructor has both Applicative and Plus instances.
Types which have Alternative instances should also satisfy the following
laws:
- Distributivity: 
(f <|> g) <*> x == (f <*> x) <|> (g <*> x) - Annihilation: 
empty <*> f = empty 
Instances
Re-exports from Control.Apply 
#lift5
lift5 :: forall g f e d c b a. Apply f => (a -> b -> c -> d -> e -> g) -> f a -> f b -> f c -> f d -> f e -> f gLift a function of five arguments to a function which accepts and returns
values wrapped with the type constructor f.
#lift4
lift4 :: forall f e d c b a. Apply f => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f eLift a function of four arguments to a function which accepts and returns
values wrapped with the type constructor f.
#lift3
lift3 :: forall f d c b a. Apply f => (a -> b -> c -> d) -> f a -> f b -> f c -> f dLift a function of three arguments to a function which accepts and returns
values wrapped with the type constructor f.
#lift2
lift2 :: forall f c b a. Apply f => (a -> b -> c) -> f a -> f b -> f cLift a function of two arguments to a function which accepts and returns
values wrapped with the type constructor f.
Re-exports from Control.Biapplicative 
#Biapplicative Source
class (Biapply w) <= Biapplicative w  whereBiapplicative captures type constructors of two arguments which support lifting of
functions of zero or more arguments, in the sense of Applicative.
Members
bipure :: forall b a. a -> b -> w a b
Re-exports from Control.Biapply 
#(<<$>>) Source
Operator alias for Control.Category.id (left-associative / precedence 4)
A convenience operator which can be used to apply the result of bipure in
the style of Applicative:
bipure f g <<$>> x <<*>> y
Re-exports from Control.Comonad 
#Comonad Source
class (Extend w) <= Comonad w  whereComonad extends the Extend class with the extract function
which extracts a value, discarding the comonadic context.
Comonad is the dual of Monad, and extract is the dual of pure.
Laws:
- Left Identity: 
extract <<= xs = xs - Right Identity: 
extract (f <<= xs) = f xs 
Members
extract :: forall a. w a -> a
Re-exports from Control.Extend 
#Extend Source
class (Functor w) <= Extend w  whereThe Extend class defines the extension operator (<<=)
which extends a local context-dependent computation to
a global computation.
Extend is the dual of Bind, and (<<=) is the dual of
(>>=).
Laws:
- Associativity: 
extend f <<< extend g = extend (f <<< extend g) 
Members
extend :: forall a b. (w a -> b) -> w a -> w b
Instances
#(=<=) Source
Operator alias for Control.Extend.composeCoKleisliFlipped (right-associative / precedence 1)
Re-exports from Control.Monad.Aff.Class   
Re-exports from Control.Monad.Eff.Class   
Re-exports from Control.Monad.Eff.Exception   
#Error
data Error :: TypeThe type of JavaScript errors
Instances
Show Error
Re-exports from Control.Monad.IO  
#IO
newtype IO aInstances
Newtype (IO a) _Functor IOApply IOApplicative IOBind IOMonad IOMonadRec IO(Semigroup a) => Semigroup (IO a)(Monoid a) => Monoid (IO a)MonadAff eff IOParallel ParIO IOMonadEff eff IOMonadThrow Error IOMonadError Error IOAlt IOPlus IOAlternative IOMonadZero IO
#runIO'
runIO' :: forall eff. IO ~> (Aff (infinity :: INFINITY | eff))#runIO
runIO :: IO ~> (Aff (infinity :: INFINITY))#launchIO
launchIO :: forall a. IO a -> IOSync UnitRe-exports from Control.Monad.IO.Class   
#MonadIO
class (Monad m) <= MonadIO m  whereMembers
liftIO :: IO ~> m
Instances
MonadIO IO(MonadIO m) => MonadIO (ContT r m)(MonadIO m) => MonadIO (ExceptT e m)(MonadIO m) => MonadIO (ListT m)(MonadIO m) => MonadIO (MaybeT m)(MonadIO m) => MonadIO (ReaderT r m)(MonadIO m, Monoid w) => MonadIO (RWST r w s m)(MonadIO m) => MonadIO (StateT s m)(MonadIO m, Monoid w) => MonadIO (WriterT w m)
Re-exports from Control.Monad.IOSync  
#IOSync
newtype IOSync aInstances
Newtype (IOSync a) _Functor IOSyncApply IOSyncApplicative IOSyncBind IOSyncMonad IOSyncMonadRec IOSync(Semigroup a) => Semigroup (IOSync a)(Monoid a) => Monoid (IOSync a)MonadEff eff IOSyncMonadError Error IOSyncMonadThrow Error IOSyncAlt IOSyncPlus IOSyncAlternative IOSyncMonadZero IOSync
#runIOSync'
runIOSync' :: forall eff. IOSync ~> (Eff (infinity :: INFINITY | eff))#runIOSync
runIOSync :: IOSync ~> (Eff (infinity :: INFINITY))Re-exports from Control.Monad.IOSync.Class   
#MonadIOSync
class (Monad m) <= MonadIOSync m  whereMembers
liftIOSync :: IOSync ~> m
Instances
MonadIOSync IOSyncMonadIOSync IO(MonadIOSync m) => MonadIOSync (ContT r m)(MonadIOSync m) => MonadIOSync (ExceptT e m)(MonadIOSync m) => MonadIOSync (ListT m)(MonadIOSync m) => MonadIOSync (MaybeT m)(MonadIOSync m) => MonadIOSync (ReaderT r m)(MonadIOSync m, Monoid w) => MonadIOSync (RWST r w s m)(MonadIOSync m) => MonadIOSync (StateT s m)(MonadIOSync m, Monoid w) => MonadIOSync (WriterT w m)
Re-exports from Control.Monad.Rec.Class   
#MonadRec Source
class (Monad m) <= MonadRec m  whereThis type class captures those monads which support tail recursion in constant stack space.
The tailRecM function takes a step function, and applies that step
function recursively until a pure value of type b is found.
Instances are provided for standard monad transformers.
For example:
loopWriter :: Number -> WriterT Sum (Eff (trace :: Trace)) Unit
loopWriter n = tailRecM go n
  where
  go 0 = do
    lift $ trace "Done!"
    pure (Done unit)
  go n = do
    tell $ Sum n
    pure (Loop (n - 1))
Members
Instances
#tailRec Source
tailRec :: forall b a. (a -> Step a b) -> a -> bCreate a pure tail-recursive function of one argument
For example:
pow :: Number -> Number -> Number
pow n p = tailRec go { accum: 1, power: p }
  where
  go :: _ -> Step _ Number
  go { accum: acc, power: 0 } = Done acc
  go { accum: acc, power: p } = Loop { accum: acc * n, power: p - 1 }
Re-exports from Control.MonadPlus 
Re-exports from Control.MonadZero 
#MonadZero Source
class (Monad m, Alternative m) <= MonadZero m The MonadZero type class has no members of its own; it just specifies
that the type has both Monad and Alternative instances.
Types which have MonadZero instances should also satisfy the following
laws:
- Annihilation: 
empty >>= f = empty 
Instances
#guard Source
guard :: forall m. MonadZero m => Boolean -> m UnitFail using Plus if a condition does not hold, or
succeed using Monad if it does.
For example:
import Prelude
import Control.Monad (bind)
import Control.MonadZero (guard)
import Data.Array ((..))
factors :: Int -> Array Int
factors n = do
  a <- 1..n
  b <- 1..n
  guard $ a * b == n
  pure a
Re-exports from Control.Plus 
#Plus Source
class (Alt f) <= Plus f  whereThe Plus type class extends the Alt type class with a value that
should be the left and right identity for (<|>).
It is similar to Monoid, except that it applies to types of
kind * -> *, like Array or List, rather than concrete types like
String or Number.
Plus instances should satisfy the following laws:
- Left identity: 
empty <|> x == x - Right identity: 
x <|> empty == x - Annihilation: 
f <$> empty == empty 
Members
empty :: forall a. f a
Instances
Re-exports from Data.Bifoldable 
#Bifoldable
class Bifoldable p  whereBifoldable represents data structures with two type arguments which can be
folded.
A fold for such a structure requires two step functions, one for each type argument. Type class instances should choose the appropriate step function based on the type of the element encountered at each point of the fold.
Default implementations are provided by the following functions:
bifoldrDefaultbifoldlDefaultbifoldMapDefaultRbifoldMapDefaultL
Note: some combinations of the default implementations are unsafe to use together - causing a non-terminating mutually recursive cycle. These combinations are documented per function.
Members
bifoldr :: forall c b a. (a -> c -> c) -> (b -> c -> c) -> c -> p a b -> cbifoldl :: forall c b a. (c -> a -> c) -> (c -> b -> c) -> c -> p a b -> cbifoldMap :: forall b a m. Monoid m => (a -> m) -> (b -> m) -> p a b -> m
Instances
(Foldable f) => Bifoldable (Clown f)(Foldable f) => Bifoldable (Joker f)(Bifoldable p) => Bifoldable (Flip p)(Bifoldable f, Bifoldable g) => Bifoldable (Product f g)(Bifoldable p) => Bifoldable (Wrap p)
#bitraverse_
bitraverse_ :: forall d c b a f t. Bifoldable t => Applicative f => (a -> f c) -> (b -> f d) -> t a b -> f UnitTraverse a data structure, accumulating effects using an Applicative functor,
ignoring the final result.
#bisequence_
bisequence_ :: forall b a f t. Bifoldable t => Applicative f => t (f a) (f b) -> f UnitCollapse a data structure, collecting effects using an Applicative functor,
ignoring the final result.
#bifor_
bifor_ :: forall d c b a f t. Bifoldable t => Applicative f => t a b -> (a -> f c) -> (b -> f d) -> f UnitA version of bitraverse_ with the data structure as the first argument.
#bifold
bifold :: forall m t. Bifoldable t => Monoid m => t m m -> mFold a data structure, accumulating values in a monoidal type.
#biany
biany :: forall c b a t. Bifoldable t => BooleanAlgebra c => (a -> c) -> (b -> c) -> t a b -> cTest whether a predicate holds at any position in a data structure.
#biall
biall :: forall c b a t. Bifoldable t => BooleanAlgebra c => (a -> c) -> (b -> c) -> t a b -> cTest whether a predicate holds at all positions in a data structure.
Re-exports from Data.Bifunctor 
#Bifunctor Source
class Bifunctor f  whereA Bifunctor is a Functor from the pair category (Type, Type) to Type.
A type constructor with two type arguments can be made into a Bifunctor if
both of its type arguments are covariant.
The bimap function maps a pair of functions over the two type arguments
of the bifunctor.
Laws:
- Identity: 
bimap id id == id - Composition: 
bimap f1 g1 <<< bimap f2 g2 == bimap (f1 <<< f2) (g1 <<< g2) 
Members
bimap :: forall d c b a. (a -> b) -> (c -> d) -> f a c -> f b d
Re-exports from Data.Bifunctor.Clown  
#Clown Source
Re-exports from Data.Bifunctor.Joker  
#Joker Source
Re-exports from Data.Bitraversable 
#Bitraversable
class (Bifunctor t, Bifoldable t) <= Bitraversable t  whereBitraversable represents data structures with two type arguments which can be
traversed.
A traversal for such a structure requires two functions, one for each type argument. Type class instances should choose the appropriate function based on the type of the element encountered at each point of the traversal.
Default implementations are provided by the following functions:
bitraverseDefaultbisequenceDefault
Members
bitraverse :: forall d c b a f. Applicative f => (a -> f c) -> (b -> f d) -> t a b -> f (t c d)bisequence :: forall b a f. Applicative f => t (f a) (f b) -> f (t a b)
Instances
(Traversable f) => Bitraversable (Clown f)(Traversable f) => Bitraversable (Joker f)(Bitraversable p) => Bitraversable (Flip p)(Bitraversable f, Bitraversable g) => Bitraversable (Product f g)(Bitraversable p) => Bitraversable (Wrap p)
#rtraverse
rtraverse :: forall f a c b t. Bitraversable t => Applicative f => (b -> f c) -> t a b -> f (t a c)#rfor
rfor :: forall f a c b t. Bitraversable t => Applicative f => t a b -> (b -> f c) -> f (t a c)#ltraverse
ltraverse :: forall f a c b t. Bitraversable t => Applicative f => (a -> f c) -> t a b -> f (t c b)#lfor
lfor :: forall f a c b t. Bitraversable t => Applicative f => t a b -> (a -> f c) -> f (t c b)#bifor
bifor :: forall d c b a f t. Bitraversable t => Applicative f => t a b -> (a -> f c) -> (b -> f d) -> f (t c d)Traverse a data structure, accumulating effects and results using an Applicative functor.
Re-exports from Data.Const 
#Const
newtype Const a bThe Const type constructor, which wraps its first type argument
and ignores its second. That is, Const a b is isomorphic to a
for any b.
Const has some useful instances. For example, the Applicative
instance allows us to collect results using a Monoid while
ignoring return values.
Constructors
Const a
Instances
Newtype (Const a b) _(Eq a) => Eq (Const a b)(Eq a) => Eq1 (Const a)(Ord a) => Ord (Const a b)(Bounded a) => Bounded (Const a b)(Show a) => Show (Const a b)Semigroupoid Const(Semigroup a) => Semigroup (Const a b)(Monoid a) => Monoid (Const a b)(Semiring a) => Semiring (Const a b)(Ring a) => Ring (Const a b)(EuclideanRing a) => EuclideanRing (Const a b)(CommutativeRing a) => CommutativeRing (Const a b)(Field a) => Field (Const a b)(HeytingAlgebra a) => HeytingAlgebra (Const a b)(BooleanAlgebra a) => BooleanAlgebra (Const a b)Functor (Const a)Invariant (Const a)Contravariant (Const a)(Semigroup a) => Apply (Const a)(Semigroup a) => Bind (Const a)(Monoid a) => Applicative (Const a)Foldable (Const a)Traversable (Const a)
Re-exports from Data.Decidable 
#Decidable
class (Decide f, Divisible f) <= Decidable f  whereDecidable is the contravariant analogue of Alternative.
Members
lose :: forall a. (a -> Void) -> f a
Instances
Decidable ComparisonDecidable EquivalenceDecidable Predicate(Monoid r) => Decidable (Op r)
#lost
lost :: forall f. Decidable f => f VoidRe-exports from Data.Decide 
#Decide
class (Divide f) <= Decide f  whereDecide is the contravariant analogue of Alt.
Members
choose :: forall c b a. (a -> Either b c) -> f b -> f c -> f a
Instances
Decide ComparisonDecide EquivalenceDecide Predicate(Semigroup r) => Decide (Op r)
#chosen
chosen :: forall b a f. Decide f => f a -> f b -> f (Either a b)chosen = choose id
Re-exports from Data.Divide 
#Divide
class (Contravariant f) <= Divide f  whereDivide is the contravariant analogue of Apply.
For example, to test equality of Points, we can use the Divide instance
for Equivalence:
type Point = Tuple Int Int
pointEquiv :: Equivalence Point
pointEquiv = divided defaultEquivalence defaultEquivalence
Members
divide :: forall c b a. (a -> Tuple b c) -> f b -> f c -> f a
Instances
Divide ComparisonDivide EquivalenceDivide Predicate(Semigroup r) => Divide (Op r)
#divided
divided :: forall b a f. Divide f => f a -> f b -> f (Tuple a b)divided = divide id
Re-exports from Data.Divisible 
#Divisible
class (Divide f) <= Divisible f  whereDivisible is the contravariant analogue of Applicative.
Members
conquer :: forall a. f a
Instances
Divisible ComparisonDivisible EquivalenceDivisible Predicate(Monoid r) => Divisible (Op r)
Re-exports from Data.Either 
#Either Source
data Either a bThe Either type is used to represent a choice between two types of value.
A common use case for Either is error handling, where Left is used to
carry an error value and Right is used to carry a success value.
Constructors
Instances
Functor (Either a)Invariant (Either a)Bifunctor EitherApply (Either e)The
Applyinstance allows functions contained within aRightto transform a value contained within aRightusing the(<*>)operator:Right f <*> Right x == Right (f x)Leftvalues are left untouched:Left f <*> Right x == Left x Right f <*> Left y == Left yCombining
Functor's<$>withApply's<*>can be used to transform a pure function to takeEither-typed arguments sof :: a -> b -> cbecomesf :: Either l a -> Either l b -> Either l c:f <$> Right x <*> Right y == Right (f x y)The
Left-preserving behaviour of both operators means the result of an expression like the above but where any one of the values isLeftmeans the whole result becomesLeftalso, taking the firstLeftvalue found:f <$> Left x <*> Right y == Left x f <$> Right x <*> Left y == Left y f <$> Left x <*> Left y == Left xApplicative (Either e)The
Applicativeinstance enables lifting of values intoEitherwith thepurefunction:pure x :: Either _ _ == Right xCombining
Functor's<$>withApply's<*>andApplicative'spurecan be used to pass a mixture ofEitherand non-Eithertyped values to a function that does not usually expect them, by usingpurefor any value that is not alreadyEithertyped:f <$> Right x <*> pure y == Right (f x y)Even though
pure = Rightit is recommended to usepurein situations like this as it allows the choice ofApplicativeto be changed later without having to go through and replaceRightwith a new constructor.Alt (Either e)The
Altinstance allows for a choice to be made between twoEithervalues with the<|>operator, where the firstRightencountered is taken.Right x <|> Right y == Right x Left x <|> Right y == Right y Left x <|> Left y == Left yBind (Either e)The
Bindinstance allows sequencing ofEithervalues and functions that return anEitherby using the>>=operator:Left x >>= f = Left x Right x >>= f = f xMonad (Either e)The
Monadinstance guarantees that there are bothApplicativeandBindinstances forEither. This also enables thedosyntactic sugar:do x' <- x y' <- y pure (f x' y')Which is equivalent to:
x >>= (\x' -> y >>= (\y' -> pure (f x' y')))Extend (Either e)The
Extendinstance allows sequencing ofEithervalues and functions that accept anEitherand return a non-Eitherresult using the<<=operator.f <<= Left x = Left x f <<= Right x = Right (f (Right x))(Show a, Show b) => Show (Either a b)The
Showinstance allowsEithervalues to be rendered as a string withshowwhenever there is anShowinstance for both type theEithercan contain.(Eq a, Eq b) => Eq (Either a b)(Eq a) => Eq1 (Either a)(Ord a, Ord b) => Ord (Either a b)(Ord a) => Ord1 (Either a)(Bounded a, Bounded b) => Bounded (Either a b)Foldable (Either a)Bifoldable EitherTraversable (Either a)Bitraversable Either(Semiring b) => Semiring (Either a b)(Semigroup b) => Semigroup (Either a b)
#either Source
either :: forall c b a. (a -> c) -> (b -> c) -> Either a b -> cTakes two functions and an Either value, if the value is a Left the
inner value is applied to the first function, if the value is a Right
the inner value is applied to the second function.
either f g (Left x) == f x
either f g (Right y) == g y
Re-exports from Data.Eq 
#Eq1
class Eq1 f  whereThe Eq1 type class represents type constructors with decidable equality.
Members
eq1 :: forall a. Eq a => f a -> f a -> Boolean
Instances
Eq1 Array
#notEq1
notEq1 :: forall a f. Eq1 f => Eq a => f a -> f a -> BooleanRe-exports from Data.Exists 
#Exists Source
data Exists :: (Type -> Type) -> TypeThis type constructor can be used to existentially quantify over a type of kind Type.
Specifically, the type Exists f is isomorphic to the existential type exists a. f a.
Existential types can be encoded using universal types (forall) for endofunctors in more general
categories. The benefit of this library is that, by using the FFI, we can create an efficient
representation of the existential by simply hiding type information.
For example, consider the type exists s. Tuple s (s -> Tuple s a) which represents infinite streams
of elements of type a.
This type can be constructed by creating a type constructor StreamF as follows:
data StreamF a s = StreamF s (s -> Tuple s a)
We can then define the type of streams using Exists:
type Stream a = Exists (StreamF a)
#runExists Source
runExists :: forall r f. (forall a. f a -> r) -> Exists f -> rThe runExists function is used to eliminate a value of type Exists f. The rank 2 type ensures
that the existentially-quantified type does not escape its scope. Since the function is required
to work for any type a, it will work for the existentially-quantified type.
For example, we can write a function to obtain the head of a stream by using runExists as follows:
head :: forall a. Stream a -> a
head = runExists head'
  where
  head' :: forall s. StreamF a s -> a
  head' (StreamF s f) = snd (f s)
#mkExists Source
mkExists :: forall a f. f a -> Exists fThe mkExists function is used to introduce a value of type Exists f, by providing a value of
type f a, for some type a which will be hidden in the existentially-quantified type.
For example, to create a value of type Stream Number, we might use mkExists as follows:
nats :: Stream Number
nats = mkExists $ StreamF 0 (\n -> Tuple (n + 1) n)
Re-exports from Data.Foldable 
#Foldable
class Foldable f  whereFoldable represents data structures which can be folded.
foldrfolds a structure from the rightfoldlfolds a structure from the leftfoldMapfolds a structure by accumulating values in aMonoid
Default implementations are provided by the following functions:
foldrDefaultfoldlDefaultfoldMapDefaultRfoldMapDefaultL
Note: some combinations of the default implementations are unsafe to use together - causing a non-terminating mutually recursive cycle. These combinations are documented per function.
Members
foldr :: forall b a. (a -> b -> b) -> b -> f a -> bfoldl :: forall b a. (b -> a -> b) -> b -> f a -> bfoldMap :: forall m a. Monoid m => (a -> m) -> f a -> m
Instances
Foldable ArrayFoldable MaybeFoldable FirstFoldable LastFoldable AdditiveFoldable DualFoldable DisjFoldable ConjFoldable Multiplicative
#traverse_
traverse_ :: forall m f b a. Applicative m => Foldable f => (a -> m b) -> f a -> m UnitTraverse a data structure, performing some effects encoded by an
Applicative functor at each value, ignoring the final result.
For example:
traverse_ print [1, 2, 3]
#sum
sum :: forall f a. Foldable f => Semiring a => f a -> aFind the sum of the numeric values in a data structure.
#sequence_
sequence_ :: forall m f a. Applicative m => Foldable f => f (m a) -> m UnitPerform all of the effects in some data structure in the order
given by the Foldable instance, ignoring the final result.
For example:
sequence_ [ trace "Hello, ", trace " world!" ]
#product
product :: forall f a. Foldable f => Semiring a => f a -> aFind the product of the numeric values in a data structure.
#or
or :: forall f a. Foldable f => HeytingAlgebra a => f a -> aThe disjunction of all the values in a data structure. When specialized
to Boolean, this function will test whether any of the values in a data
structure is true.
#oneOf
oneOf :: forall a g f. Foldable f => Plus g => f (g a) -> g aCombines a collection of elements using the Alt operation.
#notElem
notElem :: forall f a. Foldable f => Eq a => a -> f a -> BooleanTest whether a value is not an element of a data structure.
#minimumBy
minimumBy :: forall f a. Foldable f => (a -> a -> Ordering) -> f a -> Maybe aFind the smallest element of a structure, according to a given comparison
function. The comparison function should represent a total ordering (see
the Ord type class laws); if it does not, the behaviour is undefined.
#minimum
minimum :: forall f a. Ord a => Foldable f => f a -> Maybe aFind the smallest element of a structure, according to its Ord instance.
#maximumBy
maximumBy :: forall f a. Foldable f => (a -> a -> Ordering) -> f a -> Maybe aFind the largest element of a structure, according to a given comparison
function. The comparison function should represent a total ordering (see
the Ord type class laws); if it does not, the behaviour is undefined.
#maximum
maximum :: forall f a. Ord a => Foldable f => f a -> Maybe aFind the largest element of a structure, according to its Ord instance.
#intercalate
intercalate :: forall m f. Foldable f => Monoid m => m -> f m -> mFold a data structure, accumulating values in some Monoid,
combining adjacent elements using the specified separator.
#for_
for_ :: forall m f b a. Applicative m => Foldable f => f a -> (a -> m b) -> m UnitA version of traverse_ with its arguments flipped.
This can be useful when running an action written using do notation for every element in a data structure:
For example:
for_ [1, 2, 3] \n -> do
  print n
  trace "squared is"
  print (n * n)
#fold
fold :: forall m f. Foldable f => Monoid m => f m -> mFold a data structure, accumulating values in some Monoid.
#findMap
findMap :: forall f b a. Foldable f => (a -> Maybe b) -> f a -> Maybe bTry to find an element in a data structure which satisfies a predicate mapping.
#find
find :: forall f a. Foldable f => (a -> Boolean) -> f a -> Maybe aTry to find an element in a data structure which satisfies a predicate.
#elem
elem :: forall f a. Foldable f => Eq a => a -> f a -> BooleanTest whether a value is an element of a data structure.
#any
any :: forall f b a. Foldable f => HeytingAlgebra b => (a -> b) -> f a -> bany f is the same as or <<< map f; map a function over the structure,
and then get the disjunction of the results.
#and
and :: forall f a. Foldable f => HeytingAlgebra a => f a -> aThe conjunction of all the values in a data structure. When specialized
to Boolean, this function will test whether all of the values in a data
structure are true.
#all
all :: forall f b a. Foldable f => HeytingAlgebra b => (a -> b) -> f a -> ball f is the same as and <<< map f; map a function over the structure,
and then get the conjunction of the results.
Re-exports from Data.Function 
#on
on :: forall c b a. (b -> b -> c) -> (a -> b) -> a -> a -> cThe on function is used to change the domain of a binary operator.
For example, we can create a function which compares two records based on the values of their x properties:
compareX :: forall r. { x :: Number | r } -> { x :: Number | r } -> Ordering
compareX = compare `on` _.x
Re-exports from Data.Functor.Compose  
#Compose Source
newtype Compose f g aCompose f g is the composition of the two functors f and g.
Constructors
Compose (f (g a))
Instances
Newtype (Compose f g a) _(Eq1 f, Eq1 g) => Eq1 (Compose f g)(Eq1 f, Eq1 g, Eq a) => Eq (Compose f g a)(Ord1 f, Ord1 g) => Ord1 (Compose f g)(Ord1 f, Ord1 g, Ord a) => Ord (Compose f g a)(Show (f (g a))) => Show (Compose f g a)(Functor f, Functor g) => Functor (Compose f g)(Apply f, Apply g) => Apply (Compose f g)(Applicative f, Applicative g) => Applicative (Compose f g)(Foldable f, Foldable g) => Foldable (Compose f g)(Traversable f, Traversable g) => Traversable (Compose f g)(Alt f, Functor g) => Alt (Compose f g)(Plus f, Functor g) => Plus (Compose f g)(Alternative f, Applicative g) => Alternative (Compose f g)
Re-exports from Data.Functor.Contravariant  
#Contravariant
class Contravariant f  whereA Contravariant functor can be seen as a way of changing the input type
of a consumer of input, in contrast to the standard covariant Functor
that can be seen as a way of changing the output type of a producer of
output.
Contravariant instances should satisfy the following laws:
- Identity 
(>$<) id = id - Composition 
(f >$<) <<< (g >$<) = (>$<) (g <<< f) 
Members
cmap :: forall b a. (b -> a) -> f a -> f b
#coerce
coerce :: forall b a f. Contravariant f => Functor f => f a -> f b#(>$<)
Operator alias for Data.Functor.Contravariant.cmap (left-associative / precedence 4)
#(>#<)
Operator alias for Data.Functor.Contravariant.cmapFlipped (left-associative / precedence 4)
Re-exports from Data.Functor.Coproduct  
#Coproduct Source
newtype Coproduct f g aCoproduct f g is the coproduct of two functors f and g
Constructors
Instances
Newtype (Coproduct f g a) _(Eq1 f, Eq1 g, Eq a) => Eq (Coproduct f g a)(Eq1 f, Eq1 g) => Eq1 (Coproduct f g)(Ord1 f, Ord1 g, Ord a) => Ord (Coproduct f g a)(Ord1 f, Ord1 g) => Ord1 (Coproduct f g)(Show (f a), Show (g a)) => Show (Coproduct f g a)(Functor f, Functor g) => Functor (Coproduct f g)(Extend f, Extend g) => Extend (Coproduct f g)(Comonad f, Comonad g) => Comonad (Coproduct f g)(Foldable f, Foldable g) => Foldable (Coproduct f g)(Traversable f, Traversable g) => Traversable (Coproduct f g)
Re-exports from Data.Functor.Coproduct.Nested   
#type (<\/>) Source
Operator alias for Data.Functor.Coproduct.Coproduct (right-associative / precedence 6)
Re-exports from Data.Functor.Invariant  
#Invariant Source
class Invariant f  whereA type of functor that can be used to adapt the type of a wrapped function
where the parameterised type occurs in both the positive and negative
position, for example, F (a -> a).
An Invariant instance should satisfy the following laws:
- Identity: 
imap id id = id - Composition: 
imap g1 g2 <<< imap f1 f2 = imap (g1 <<< f1) (f2 <<< g2) 
Members
imap :: forall b a. (a -> b) -> (b -> a) -> f a -> f b
Instances
Re-exports from Data.Functor.Mu  
#Mu Source
newtype Mu fMu f is the least fixed point of a functor f, when it exists.
Constructors
Instances
Newtype (Mu f) _(Eq1 f) => Eq (Mu f)To implement
Eq, we requirefto have higher-kinded equality.(Eq1 f, Ord1 f) => Ord (Mu f)To implement
Ord, we requirefto have higher-kinded comparison.(Show (f TacitString), Functor f) => Show (Mu f)Showis compositional, so we onlyfto be able to show a single layer of structure.
Re-exports from Data.Functor.Nu  
Re-exports from Data.Functor.Product  
#Product Source
newtype Product f g aProduct f g is the product of the two functors f and g.
Constructors
Instances
Newtype (Product f g a) _(Eq1 f, Eq1 g, Eq a) => Eq (Product f g a)(Eq1 f, Eq1 g) => Eq1 (Product f g)(Ord1 f, Ord1 g, Ord a) => Ord (Product f g a)(Ord1 f, Ord1 g) => Ord1 (Product f g)(Show (f a), Show (g a)) => Show (Product f g a)(Functor f, Functor g) => Functor (Product f g)(Foldable f, Foldable g) => Foldable (Product f g)(Traversable f, Traversable g) => Traversable (Product f g)(Apply f, Apply g) => Apply (Product f g)(Applicative f, Applicative g) => Applicative (Product f g)(Bind f, Bind g) => Bind (Product f g)(Monad f, Monad g) => Monad (Product f g)
Re-exports from Data.Functor.Product.Nested   
#type (</\>) Source
Operator alias for Data.Functor.Product.Product (right-associative / precedence 6)
Re-exports from Data.Group 
#Abelian Source
type Abelian a b = Group a => Commutative a => bAn Abelian group is a group with a commutative operation.
#Group Source
Re-exports from Data.Identity 
#Identity Source
newtype Identity aConstructors
Identity a
Instances
Newtype (Identity a) _(Eq a) => Eq (Identity a)(Ord a) => Ord (Identity a)(Bounded a) => Bounded (Identity a)(HeytingAlgebra a) => HeytingAlgebra (Identity a)(BooleanAlgebra a) => BooleanAlgebra (Identity a)(Semigroup a) => Semigroup (Identity a)(Monoid a) => Monoid (Identity a)(Semiring a) => Semiring (Identity a)(EuclideanRing a) => EuclideanRing (Identity a)(Ring a) => Ring (Identity a)(CommutativeRing a) => CommutativeRing (Identity a)(Field a) => Field (Identity a)(Lazy a) => Lazy (Identity a)(Show a) => Show (Identity a)Eq1 IdentityOrd1 IdentityFunctor IdentityInvariant IdentityAlt IdentityApply IdentityApplicative IdentityBind IdentityMonad IdentityExtend IdentityComonad IdentityFoldable IdentityTraversable Identity
Re-exports from Data.Int 
Re-exports from Data.Int.Bits  
Re-exports from Data.Lazy 
#Lazy Source
data Lazy :: Type -> TypeLazy a represents lazily-computed values of type a.
A lazy value is computed at most once - the result is saved after the first computation, and subsequent attempts to read the value simply return the saved value.
Lazy values can be created with defer, or by using the provided
type class instances.
Lazy values can be evaluated by using the force function.
Instances
(Semiring a) => Semiring (Lazy a)(Ring a) => Ring (Lazy a)(CommutativeRing a) => CommutativeRing (Lazy a)(EuclideanRing a) => EuclideanRing (Lazy a)(Field a) => Field (Lazy a)(Eq a) => Eq (Lazy a)(Ord a) => Ord (Lazy a)(Bounded a) => Bounded (Lazy a)(Semigroup a) => Semigroup (Lazy a)(Monoid a) => Monoid (Lazy a)(HeytingAlgebra a) => HeytingAlgebra (Lazy a)(BooleanAlgebra a) => BooleanAlgebra (Lazy a)Functor LazyInvariant LazyApply LazyApplicative LazyBind LazyMonad LazyExtend LazyComonad Lazy(Show a) => Show (Lazy a)Lazy (Lazy a)
Re-exports from Data.Leibniz 
#Leibniz
newtype Leibniz a bTwo types are equal if they are equal in all contexts.
Constructors
Leibniz (forall f. f a -> f b)
Instances
Semigroupoid LeibnizCategory Leibniz
#type (~)
Operator alias for Data.Leibniz.Leibniz (non-associative / precedence 4)
Re-exports from Data.List 
#List
data List aConstructors
Nil
Instances
(Show a) => Show (List a)(Eq a) => Eq (List a)Eq1 List(Ord a) => Ord (List a)Ord1 ListSemigroup (List a)Monoid (List a)Functor ListFoldable ListUnfoldable ListTraversable ListApply ListApplicative ListBind ListMonad ListAlt ListPlus ListAlternative ListMonadZero ListMonadPlus ListExtend List
#(:)
Operator alias for Data.List.Types.Cons (right-associative / precedence 6)
Re-exports from Data.Maybe 
#Maybe Source
data Maybe aThe Maybe type is used to represent optional values and can be seen as
something like a type-safe null, where Nothing is null and Just x
is the non-null value x.
Constructors
Instances
Functor MaybeThe
Functorinstance allows functions to transform the contents of aJustwith the<$>operator:f <$> Just x == Just (f x)Nothingvalues are left untouched:f <$> Nothing == NothingApply MaybeThe
Applyinstance allows functions contained within aJustto transform a value contained within aJustusing theapplyoperator:Just f <*> Just x == Just (f x)Nothingvalues are left untouched:Just f <*> Nothing == Nothing Nothing <*> Just x == NothingCombining
Functor's<$>withApply's<*>can be used transform a pure function to takeMaybe-typed arguments sof :: a -> b -> cbecomesf :: Maybe a -> Maybe b -> Maybe c:f <$> Just x <*> Just y == Just (f x y)The
Nothing-preserving behaviour of both operators means the result of an expression like the above but where any one of the values isNothingmeans the whole result becomesNothingalso:f <$> Nothing <*> Just y == Nothing f <$> Just x <*> Nothing == Nothing f <$> Nothing <*> Nothing == NothingApplicative MaybeThe
Applicativeinstance enables lifting of values intoMaybewith thepureorreturnfunction (returnis an alias forpure):pure x :: Maybe _ == Just x return x :: Maybe _ == Just xCombining
Functor's<$>withApply's<*>andApplicative'spurecan be used to pass a mixture ofMaybeand non-Maybetyped values to a function that does not usually expect them, by usingpurefor any value that is not alreadyMaybetyped:f <$> Just x <*> pure y == Just (f x y)Even though
pure = Justit is recommended to usepurein situations like this as it allows the choice ofApplicativeto be changed later without having to go through and replaceJustwith a new constructor.Alt MaybeThe
Altinstance allows for a choice to be made between twoMaybevalues with the<|>operator, where the firstJustencountered is taken.Just x <|> Just y == Just x Nothing <|> Just y == Just y Nothing <|> Nothing == NothingPlus MaybeThe
Plusinstance provides a defaultMaybevalue:empty :: Maybe _ == NothingAlternative MaybeThe
Alternativeinstance guarantees that there are bothApplicativeandPlusinstances forMaybe.Bind MaybeThe
Bindinstance allows sequencing ofMaybevalues and functions that return aMaybeby using the>>=operator:Just x >>= f = f x Nothing >>= f = NothingMonad MaybeThe
Monadinstance guarantees that there are bothApplicativeandBindinstances forMaybe. This also enables thedosyntactic sugar:do x' <- x y' <- y pure (f x' y')Which is equivalent to:
x >>= (\x' -> y >>= (\y' -> pure (f x' y')))MonadZero MaybeExtend MaybeThe
Extendinstance allows sequencing ofMaybevalues and functions that accept aMaybe aand return a non-Mayberesult using the<<=operator.f <<= Nothing = Nothing f <<= Just x = Just (f x)Invariant Maybe(Semigroup a) => Semigroup (Maybe a)The
Semigroupinstance enables use of the operator<>onMaybevalues whenever there is aSemigroupinstance for the type theMaybecontains. The exact behaviour of<>depends on the "inner"Semigroupinstance, but generally captures the notion of appending or combining things.Just x <> Just y = Just (x <> y) Just x <> Nothing = Just x Nothing <> Just y = Just y Nothing <> Nothing = Nothing(Semigroup a) => Monoid (Maybe a)(Eq a) => Eq (Maybe a)Eq1 Maybe(Ord a) => Ord (Maybe a)Ord1 Maybe(Bounded a) => Bounded (Maybe a)(Show a) => Show (Maybe a)The
Showinstance allowsMaybevalues to be rendered as a string withshowwhenever there is anShowinstance for the type theMaybecontains.
#maybe' Source
maybe' :: forall b a. (Unit -> b) -> (a -> b) -> Maybe a -> bSimilar to maybe but for use in cases where the default value may be
expensive to compute. As PureScript is not lazy, the standard maybe has
to evaluate the default value before returning the result, whereas here
the value is only computed when the Maybe is known to be Nothing.
maybe' (\_ -> x) f Nothing == x
maybe' (\_ -> x) f (Just y) == f y
#maybe Source
maybe :: forall b a. b -> (a -> b) -> Maybe a -> bTakes a default value, a function, and a Maybe value. If the Maybe
value is Nothing the default value is returned, otherwise the function
is applied to the value inside the Just and the result is returned.
maybe x f Nothing == x
maybe x f (Just y) == f y
#fromMaybe' Source
fromMaybe' :: forall a. (Unit -> a) -> Maybe a -> aSimilar to fromMaybe but for use in cases where the default value may be
expensive to compute. As PureScript is not lazy, the standard fromMaybe
has to evaluate the default value before returning the result, whereas here
the value is only computed when the Maybe is known to be Nothing.
fromMaybe' (\_ -> x) Nothing == x
fromMaybe' (\_ -> x) (Just y) == y
Re-exports from Data.Maybe.First  
#First Source
newtype First aMonoid returning the first (left-most) non-Nothing value.
First (Just x) <> First (Just y) == First (Just x)
First Nothing <> First (Just y) == First (Just y)
First Nothing <> Nothing == First Nothing
mempty :: First _ == First Nothing
Constructors
Instances
Re-exports from Data.Maybe.Last  
#Last Source
newtype Last aMonoid returning the last (right-most) non-Nothing value.
Last (Just x) <> Last (Just y) == Last (Just y)
Last (Just x) <> Nothing == Last (Just x)
Last Nothing <> Nothing == Last Nothing
mempty :: Last _ == Last Nothing
Constructors
Instances
Re-exports from Data.Module 
#LeftModule Source
class (Ring r) <= LeftModule x r | x -> rLeft modules over rings.
Instances must satisfy the following laws:
- Left distributivity: 
r ^* (x ^+ y) = r ^* x ^+ r ^* y - Left distributivity: 
(r + s) ^* x = r ^* x ^+ s ^* x - Left compatibility: 
(r * s) ^* x = r ^* (s ^* x) - Left identity: 
one ^* x = x 
Instances
(Ring a) => LeftModule Unit a
#RightModule Source
class (Ring r) <= RightModule x r | x -> rRight modules over rings.
Instances must satisfy the following laws:
- Right distributivity: 
(x +^ y) *^ r = x *^ r +^ y *^ r - Right distributivity: 
x *^ (r + s) = x *^ r +^ x *^ s - Right compatibility: 
x *^ (r * s) = (x *^ r) *^ s - Right identity: 
x *^ one = x 
Instances
(Ring a) => RightModule Unit a
#mnegateR Source
mnegateR :: forall r x. RightModule x r => x -> x#mnegateL Source
mnegateL :: forall r x. LeftModule x r => x -> xRe-exports from Data.Monoid 
#Monoid Source
class (Semigroup m) <= Monoid m  whereA Monoid is a Semigroup with a value mempty, which is both a
left and right unit for the associative operation <>:
forall x. mempty <> x = x <> mempty = x
Monoids are commonly used as the result of fold operations, where
<> is used to combine individual results, and mempty gives the result
of folding an empty collection of elements.
Members
mempty :: m
Instances
Re-exports from Data.Monoid.Additive  
#Additive Source
newtype Additive aMonoid and semigroup for semirings under addition.
Additive x <> Additive y == Additive (x + y)
mempty :: Additive _ == Additive zero
Constructors
Additive a
Instances
Newtype (Additive a) _(Eq a) => Eq (Additive a)(Ord a) => Ord (Additive a)(Bounded a) => Bounded (Additive a)Functor AdditiveInvariant AdditiveApply AdditiveApplicative AdditiveBind AdditiveMonad AdditiveExtend AdditiveComonad Additive(Show a) => Show (Additive a)(Semiring a) => Semigroup (Additive a)(Semiring a) => Monoid (Additive a)
Re-exports from Data.Monoid.Alternate  
#Alternate Source
newtype Alternate f aMonoid and semigroup instances corresponding to Plus and Alt instances
for f
Alternate fx <> Alternate fy == Alternate (fx <|> fy)
mempty :: Alternate _ == Alternate empty
Constructors
Alternate (f a)
Instances
Newtype (Alternate f a) _(Eq (f a)) => Eq (Alternate f a)(Ord (f a)) => Ord (Alternate f a)(Bounded (f a)) => Bounded (Alternate f a)(Functor f) => Functor (Alternate f)(Invariant f) => Invariant (Alternate f)(Apply f) => Apply (Alternate f)(Applicative f) => Applicative (Alternate f)(Alt f) => Alt (Alternate f)(Plus f) => Plus (Alternate f)(Alternative f) => Alternative (Alternate f)(Bind f) => Bind (Alternate f)(Monad f) => Monad (Alternate f)(Extend f) => Extend (Alternate f)(Comonad f) => Comonad (Alternate f)(Show (f a)) => Show (Alternate f a)(Alt f) => Semigroup (Alternate f a)(Plus f) => Monoid (Alternate f a)
Re-exports from Data.Monoid.Conj  
#Conj Source
newtype Conj aMonoid under conjuntion.
Conj x <> Conj y == Conj (x && y)
mempty :: Conj _ == Conj top
Constructors
Conj a
Instances
Newtype (Conj a) _(Eq a) => Eq (Conj a)(Ord a) => Ord (Conj a)(Bounded a) => Bounded (Conj a)Functor ConjInvariant ConjApply ConjApplicative ConjBind ConjMonad ConjExtend ConjComonad Conj(Show a) => Show (Conj a)(HeytingAlgebra a) => Semigroup (Conj a)(HeytingAlgebra a) => Monoid (Conj a)(HeytingAlgebra a) => Semiring (Conj a)
Re-exports from Data.Monoid.Disj  
#Disj Source
newtype Disj aMonoid under disjuntion.
Disj x <> Disj y == Disj (x || y)
mempty :: Disj _ == Disj bottom
Constructors
Disj a
Instances
Newtype (Disj a) _(Eq a) => Eq (Disj a)(Ord a) => Ord (Disj a)(Bounded a) => Bounded (Disj a)Functor DisjInvariant DisjApply DisjApplicative DisjBind DisjMonad DisjExtend DisjComonad Disj(Show a) => Show (Disj a)(HeytingAlgebra a) => Semigroup (Disj a)(HeytingAlgebra a) => Monoid (Disj a)(HeytingAlgebra a) => Semiring (Disj a)
Re-exports from Data.Monoid.Dual  
#Dual Source
Re-exports from Data.Monoid.Endo  
#Endo Source
Re-exports from Data.Monoid.Multiplicative  
#Multiplicative Source
newtype Multiplicative aMonoid and semigroup for semirings under multiplication.
Multiplicative x <> Multiplicative y == Multiplicative (x * y)
mempty :: Multiplicative _ == Multiplicative one
Constructors
Instances
Newtype (Multiplicative a) _(Eq a) => Eq (Multiplicative a)(Ord a) => Ord (Multiplicative a)(Bounded a) => Bounded (Multiplicative a)Functor MultiplicativeInvariant MultiplicativeApply MultiplicativeApplicative MultiplicativeBind MultiplicativeMonad MultiplicativeExtend MultiplicativeComonad Multiplicative(Show a) => Show (Multiplicative a)(Semiring a) => Semigroup (Multiplicative a)(Semiring a) => Monoid (Multiplicative a)
Re-exports from Data.Newtype 
#Newtype Source
class Newtype t a | t -> a whereA type class for newtypes to enable convenient wrapping and unwrapping,
and the use of the other functions in this module.
The compiler can derive instances of Newtype automatically:
newtype EmailAddress = EmailAddress String
derive instance newtypeEmailAddress :: Newtype EmailAddress _
Note that deriving for Newtype instances requires that the type be
defined as newtype rather than data declaration (even if the data
structurally fits the rules of a newtype), and the use of a wildcard for
the wrapped type.
Instances must obey the following laws:
unwrap <<< wrap = id
wrap <<< unwrap = id
Members
#underF Source
underF :: forall b s a t g f. Functor f => Functor g => Newtype t a => Newtype s b => (a -> t) -> (f t -> g s) -> f a -> g bMuch like under, but where the lifted function operates on values in a
Functor:
newtype EmailAddress = EmailAddress String
derive instance newtypeEmailAddress :: Newtype EmailAddress _
isValid :: EmailAddress -> Boolean
isValid x = false -- imagine a slightly less strict predicate here
findValidEmailString :: Array String -> Maybe String
findValidEmailString = underF EmailAddress (Foldable.find isValid)
The above example also demonstrates that the functor type is polymorphic
here too, the input is an Array but the result is a Maybe.
#under Source
under :: forall b s a t. Newtype t a => Newtype s b => (a -> t) -> (t -> s) -> a -> bThe opposite of over: lowers a function that operates on Newtyped
values to operate on the wrapped value instead.
newtype Degrees = Degrees Number
derive instance newtypeDegrees :: Newtype Degrees _
newtype NormalDegrees = NormalDegrees Number
derive instance newtypeNormalDegrees :: Newtype NormalDegrees _
normaliseDegrees :: Degrees -> NormalDegrees
normaliseDegrees (Degrees deg) = NormalDegrees (deg % 360.0)
asNormalDegrees :: Number -> Number
asNormalDegrees = under Degrees normaliseDegrees
As with over the Newtype is polymorphic, as illustrated in the example
above - both Degrees and NormalDegrees are instances of Newtype,
so even though normaliseDegrees changes the result type we can still put
a Number in and get a Number out via under.
#overF Source
overF :: forall b s a t g f. Functor f => Functor g => Newtype t a => Newtype s b => (a -> t) -> (f a -> g b) -> f t -> g sMuch like over, but where the lifted function operates on values in a
Functor:
findLabel :: String -> Array Label -> Maybe Label
findLabel s = overF Label (Foldable.find (_ == s))
The above example also demonstrates that the functor type is polymorphic
here too, the input is an Array but the result is a Maybe.
#over2 Source
over2 :: forall b s a t. Newtype t a => Newtype s b => (a -> t) -> (a -> a -> b) -> t -> t -> sLifts a binary function to operate over newtypes.
newtype Meter = Meter Int
derive newtype instance newtypeMeter :: Newtype Meter _
newtype SquareMeter = SquareMeter Int
derive newtype instance newtypeSquareMeter :: Newtype SquareMeter _
area :: Meter -> Meter -> SquareMeter
area = over2 Meter (*)
The above example also demonstrates that the return type is polymorphic here too.
#over Source
over :: forall b s a t. Newtype t a => Newtype s b => (a -> t) -> (a -> b) -> t -> sLifts a function operate over newtypes. This can be used to lift a
function to manipulate the contents of a single newtype, somewhat like
map does for a Functor:
newtype Label = Label String
derive instance newtypeLabel :: Newtype Label _
toUpperLabel :: Label -> Label
toUpperLabel = over Label String.toUpper
But the result newtype is polymorphic, meaning the result can be returned as an alternative newtype:
newtype UppercaseLabel = UppercaseLabel String
derive instance newtypeUppercaseLabel :: Newtype UppercaseLabel _
toUpperLabel' :: Label -> UppercaseLabel
toUpperLabel' = over Label String.toUpper
#ala Source
ala :: forall b s a t f. Functor f => Newtype t a => Newtype s b => (a -> t) -> ((b -> s) -> f t) -> f aThis combinator is for when you have a higher order function that you want
to use in the context of some newtype - foldMap being a common example:
ala Additive foldMap [1,2,3,4] -- 10
ala Multiplicative foldMap [1,2,3,4] -- 24
ala Conj foldMap [true, false] -- false
ala Disj foldMap [true, false] -- true
Re-exports from Data.Op 
#Op
newtype Op a bThe opposite of the function category.
Constructors
Op (b -> a)
Instances
Newtype (Op a b) _Semigroupoid OpCategory OpContravariant (Op a)
Re-exports from Data.Ord 
#Ord1
class (Eq1 f) <= Ord1 f  whereThe Ord1 type class represents totally ordered type constructors.
Members
compare1 :: forall a. Ord a => f a -> f a -> Ordering
Instances
Ord1 Array
#signum
signum :: forall a. Ord a => Ring a => a -> aThe sign function; always evaluates to either one or negate one. For
any x, we should have signum x * abs x == x.
#abs
abs :: forall a. Ord a => Ring a => a -> aThe absolute value function. abs x is defined as if x >= zero then x
else negate x.
Re-exports from Data.Ord.Max  
#Max Source
Re-exports from Data.Ord.Min  
#Min Source
Re-exports from Data.Profunctor 
#Profunctor
class Profunctor p  whereA Profunctor is a Functor from the pair category (Type^op, Type)
to Type.
In other words, a Profunctor is a type constructor of two type
arguments, which is contravariant in its first argument and covariant
in its second argument.
The dimap function can be used to map functions over both arguments
simultaneously.
A straightforward example of a profunctor is the function arrow (->).
Laws:
- Identity: 
dimap id id = id - Composition: 
dimap f1 g1 <<< dimap f2 g2 = dimap (f1 >>> f2) (g1 <<< g2) 
Members
dimap :: forall d c b a. (a -> b) -> (c -> d) -> p b c -> p a d
Instances
Profunctor Function
#arr
arr :: forall p b a. Category p => Profunctor p => (a -> b) -> p a bLift a pure function into any Profunctor which is also a Category.
Re-exports from Data.Profunctor.Choice  
#Choice
class (Profunctor p) <= Choice p  whereThe Choice class extends Profunctor with combinators for working with
sum types.
left and right lift values in a Profunctor to act on the Left and
Right components of a sum, respectively.
Looking at Choice through the intuition of inputs and outputs
yields the following type signature:
left ::  forall input output a. p input output -> p (Either input a) (Either output a)
right :: forall input output a. p input output -> p (Either a input) (Either a output)
If we specialize the profunctor p to the function arrow, we get the following type
signatures:
left ::  forall input output a. (input -> output) -> (Either input a) -> (Either output a)
right :: forall input output a. (input -> output) -> (Either a input) -> (Either a output)
When the profunctor is Function application, left allows you to map a function over the
left side of an Either, and right maps it over the right side (same as map would do).
Members
left :: forall c b a. p a b -> p (Either a c) (Either b c)right :: forall c b a. p b c -> p (Either a b) (Either a c)
Instances
Choice Function
#(|||)
Operator alias for Data.Profunctor.Choice.fanin (right-associative / precedence 2)
#(+++)
Operator alias for Data.Profunctor.Choice.splitChoice (right-associative / precedence 2)
Re-exports from Data.Profunctor.Closed  
#Closed
class (Profunctor p) <= Closed p  whereThe Closed class extends the Profunctor class to work with functions.
Members
closed :: forall x b a. p a b -> p (x -> a) (x -> b)
Instances
Closed Function
Re-exports from Data.Profunctor.Costar  
#Costar
newtype Costar f b aCostar turns a Functor into a Profunctor "backwards".
Costar f is also the co-Kleisli category for f.
Constructors
Costar (f b -> a)
Instances
Newtype (Costar f a b) _(Extend f) => Semigroupoid (Costar f)(Comonad f) => Category (Costar f)Functor (Costar f a)Invariant (Costar f a)Apply (Costar f a)Applicative (Costar f a)Bind (Costar f a)Monad (Costar f a)Distributive (Costar f a)(Functor f) => Profunctor (Costar f)(Comonad f) => Strong (Costar f)(Functor f) => Costrong (Costar f)(Applicative f) => Cochoice (Costar f)(Functor f) => Closed (Costar f)
Re-exports from Data.Profunctor.Costrong  
#Costrong
class (Profunctor p) <= Costrong p  whereThe Costrong class provides the dual operations of the Strong class.
Members
unfirst :: forall c b a. p (Tuple a c) (Tuple b c) -> p a bunsecond :: forall c b a. p (Tuple a b) (Tuple a c) -> p b c
Re-exports from Data.Profunctor.Star  
#Star
newtype Star f a bStar turns a Functor into a Profunctor.
Star f is also the Kleisli category for f
Constructors
Star (a -> f b)
Instances
Newtype (Star f a b) _(Bind f) => Semigroupoid (Star f)(Monad f) => Category (Star f)(Functor f) => Functor (Star f a)(Invariant f) => Invariant (Star f a)(Apply f) => Apply (Star f a)(Applicative f) => Applicative (Star f a)(Bind f) => Bind (Star f a)(Monad f) => Monad (Star f a)(Alt f) => Alt (Star f a)(Plus f) => Plus (Star f a)(Alternative f) => Alternative (Star f a)(MonadZero f) => MonadZero (Star f a)(MonadPlus f) => MonadPlus (Star f a)(Distributive f) => Distributive (Star f a)(Functor f) => Profunctor (Star f)(Functor f) => Strong (Star f)(Applicative f) => Choice (Star f)(Distributive f) => Closed (Star f)
Re-exports from Data.Profunctor.Strong  
#Strong
class (Profunctor p) <= Strong p  whereThe Strong class extends Profunctor with combinators for working with
product types.
first and second lift values in a Profunctor to act on the first and
second components of a Tuple, respectively.
Another way to think about Strong is to piggyback on the intuition of inputs and outputs. Rewriting the type signature in this light then yields:
first ::  forall input output a. p input output -> p (Tuple input a) (Tuple output a)
second :: forall input output a. p input output -> p (Tuple a input) (Tuple a output)
If we specialize the profunctor p to the function arrow, we get the following type signatures, which may look a bit more familiar:
first ::  forall input output a. (input -> output) -> (Tuple input a) -> (Tuple output a)
second :: forall input output a. (input -> output) -> (Tuple a input) -> (Tuple a output)
So, when the profunctor is Function application, first essentially applies your function
to the first element of a Tuple, and second applies it to the second element (same as map would do).
Members
first :: forall c b a. p a b -> p (Tuple a c) (Tuple b c)second :: forall c b a. p b c -> p (Tuple a b) (Tuple a c)
Instances
Strong Function
#(***)
Operator alias for Data.Profunctor.Strong.splitStrong (right-associative / precedence 3)
#(&&&)
Operator alias for Data.Profunctor.Strong.fanout (right-associative / precedence 3)
Re-exports from Data.Semigroup.Commutative  
#Commutative Source
class (Semigroup g) <= Commutative g A Commutative is a Semigroup with a commutative operation. Instances
must satisfy the following law in addition to the group laws:
- Commutativity: 
forall x, y. x <> y = y <> x 
Instances
Commutative VoidCommutative Unit(Commutative g) => Commutative (Dual g)(Ring r) => Commutative (Additive r)
Re-exports from Data.Symbol 
#IsSymbol Source
class IsSymbol (sym :: Symbol)  whereA class for known symbols
Members
reflectSymbol :: SProxy sym -> String
Instances
(IsSymbol left, IsSymbol right) => IsSymbol (TypeConcat left right)
#reifySymbol Source
reifySymbol :: forall r. String -> (forall sym. IsSymbol sym => SProxy sym -> r) -> rRe-exports from Data.Traversable 
#Traversable
class (Functor t, Foldable t) <= Traversable t  whereTraversable represents data structures which can be traversed,
accumulating results and effects in some Applicative functor.
traverseruns an action for every element in a data structure, and accumulates the results.sequenceruns the actions contained in a data structure, and accumulates the results.
The traverse and sequence functions should be compatible in the
following sense:
traverse f xs = sequence (f <$> xs)sequence = traverse id
Traversable instances should also be compatible with the corresponding
Foldable instances, in the following sense:
foldMap f = runConst <<< traverse (Const <<< f)
Default implementations are provided by the following functions:
traverseDefaultsequenceDefault
Members
traverse :: forall m b a. Applicative m => (a -> m b) -> t a -> m (t b)sequence :: forall m a. Applicative m => t (m a) -> m (t a)
Instances
Traversable ArrayTraversable MaybeTraversable FirstTraversable LastTraversable AdditiveTraversable DualTraversable ConjTraversable DisjTraversable Multiplicative
#scanr
scanr :: forall f b a. Traversable f => (a -> b -> b) -> b -> f a -> f bFold a data structure from the right, keeping all intermediate results
instead of only the final result. Note that the initial value does not
appear in the result (unlike Haskell's Prelude.scanr).
scanr (+) 0  [1,2,3] = [1,3,6]
scanr (flip (-)) 10 [1,2,3] = [4,5,7]
#scanl
scanl :: forall f b a. Traversable f => (b -> a -> b) -> b -> f a -> f bFold a data structure from the left, keeping all intermediate results
instead of only the final result. Note that the initial value does not
appear in the result (unlike Haskell's Prelude.scanl).
scanl (+) 0  [1,2,3] = [1,3,6]
scanl (-) 10 [1,2,3] = [9,7,4]
#for
for :: forall t m b a. Applicative m => Traversable t => t a -> (a -> m b) -> m (t b)A version of traverse with its arguments flipped.
This can be useful when running an action written using do notation for every element in a data structure:
For example:
for [1, 2, 3] \n -> do
  print n
  return (n * n)
Re-exports from Data.Tuple 
#Tuple Source
data Tuple a bA simple product type for wrapping a pair of component values.
Constructors
Tuple a b
Instances
(Show a, Show b) => Show (Tuple a b)Allows
Tuples to be rendered as a string withshowwhenever there areShowinstances for both component types.(Eq a, Eq b) => Eq (Tuple a b)(Eq a) => Eq1 (Tuple a)(Ord a, Ord b) => Ord (Tuple a b)(Ord a) => Ord1 (Tuple a)(Bounded a, Bounded b) => Bounded (Tuple a b)Semigroupoid Tuple(Semigroup a, Semigroup b) => Semigroup (Tuple a b)The
Semigroupinstance enables use of the associative operator<>onTuples whenever there areSemigroupinstances for the component types. The<>operator is applied pairwise, so:(Tuple a1 b1) <> (Tuple a2 b2) = Tuple (a1 <> a2) (b1 <> b2)(Monoid a, Monoid b) => Monoid (Tuple a b)(Semiring a, Semiring b) => Semiring (Tuple a b)(Ring a, Ring b) => Ring (Tuple a b)(CommutativeRing a, CommutativeRing b) => CommutativeRing (Tuple a b)(HeytingAlgebra a, HeytingAlgebra b) => HeytingAlgebra (Tuple a b)(BooleanAlgebra a, BooleanAlgebra b) => BooleanAlgebra (Tuple a b)Functor (Tuple a)The
Functorinstance allows functions to transform the contents of aTuplewith the<$>operator, applying the function to the second component, so:f <$> (Tuple x y) = Tuple x (f y)Invariant (Tuple a)Bifunctor Tuple(Semigroup a) => Apply (Tuple a)The
Functorinstance allows functions to transform the contents of aTuplewith the<*>operator whenever there is aSemigroupinstance for thefstcomponent, so:(Tuple a1 f) <*> (Tuple a2 x) == Tuple (a1 <> a2) (f x)Biapply Tuple(Monoid a) => Applicative (Tuple a)Biapplicative Tuple(Semigroup a) => Bind (Tuple a)(Monoid a) => Monad (Tuple a)Extend (Tuple a)Comonad (Tuple a)(Lazy a, Lazy b) => Lazy (Tuple a b)Foldable (Tuple a)Bifoldable TupleTraversable (Tuple a)Bitraversable Tuple(TypeEquals a Unit) => Distributive (Tuple a)
Re-exports from Data.Tuple.Nested  
#(/\) Source
Operator alias for Data.Tuple.Tuple (right-associative / precedence 6)
Shorthand for constructing n-tuples as nested pairs.
a /\ b /\ c /\ d /\ unit becomes Tuple a (Tuple b (Tuple c (Tuple d unit)))
#type (/\) Source
Operator alias for Data.Tuple.Tuple (right-associative / precedence 6)
Shorthand for constructing n-tuple types as nested pairs.
forall a b c d. a /\ b /\ c /\ d /\ Unit becomes
forall a b c d. Tuple a (Tuple b (Tuple c (Tuple d Unit)))
Re-exports from Debug.Trace 
#traceShowM Source
traceShowM :: forall a m. DebugWarning => Show a => Monad m => a -> m aSame as traceAnyM but only for Showable values
#traceShowA Source
traceShowA :: forall b a. DebugWarning => Show b => Applicative a => b -> a UnitLog a Showable value to the console for debugging purposes and then
return the unit value of the Applicative a.
#traceShow Source
traceShow :: forall b a. DebugWarning => Show a => a -> (Unit -> b) -> bLog a Showable value to the console for debugging purposes and then
return a value.
#traceAnyM Source
traceAnyM :: forall a m. DebugWarning => Monad m => a -> m aLog any PureScript value to the console and return it in Monad
useful when one has monadic chains
mbArray :: Maybe (Array Int)
foo :: Int
foo = fromMaybe zero
  $ mbArray
  >>= traceAnyM
  >>= head
  >>= traceAnyM
#traceAnyA Source
traceAnyA :: forall b a. DebugWarning => Applicative a => b -> a UnitLog any PureScript value to the console and return the unit value of the
Applicative a.
#traceAny Source
traceAny :: forall b a. DebugWarning => a -> (Unit -> b) -> bLog any PureScript value to the console for debugging purposes and then return a value. This will log the value's underlying representation for low-level debugging.
#traceA Source
traceA :: forall a. DebugWarning => Applicative a => String -> a UnitLog a message to the console for debugging purposes and then return the
unit value of the Applicative a.
For example:
doSomething = do
  traceA "Hello"
  ... some value or computation ...
#trace Source
trace :: forall a. DebugWarning => String -> (Unit -> a) -> aLog a message to the console for debugging purposes and then return a value. The return value is thunked so it is not evaluated until after the message has been printed, to preserve a predictable console output.
For example:
doSomething = trace "Hello" \_ -> ... some value or computation ...
#spy Source
spy :: forall a. DebugWarning => a -> aLog any value and return it
Re-exports from Partial
Re-exports from Partial.Unsafe 
#unsafePartial Source
unsafePartial :: forall a. (Partial => a) -> aDischarge a partiality constraint, unsafely.
#unsafeCrashWith Source
unsafeCrashWith :: forall a. String -> aA function which crashes with the specified error message.
Re-exports from Prelude
#Void
newtype VoidAn uninhabited data type.
Void is useful to eliminate the possibility of a value being created.
For example, a value of type Either Void Boolean can never have
a Left value created in PureScript.
Instances
Show Void
#Unit
data Unit :: TypeThe Unit type has a single inhabitant, called unit. It represents
values with no computational content.
Unit is often used, wrapped in a monadic type constructor, as the
return type of a computation where only
the effects are important.
Instances
Show Unit
#Ordering
data OrderingThe Ordering data type represents the three possible outcomes of
comparing two values:
LT - The first value is less than the second.
GT - The first value is greater than the second.
EQ - The first value is equal to the second.
Constructors
LTGTEQ
Instances
Eq OrderingSemigroup OrderingShow Ordering
#Applicative
class (Apply f) <= Applicative f  whereThe Applicative type class extends the Apply type class
with a pure function, which can be used to create values of type f a
from values of type a.
Where Apply provides the ability to lift functions of two or
more arguments to functions whose arguments are wrapped using f, and
Functor provides the ability to lift functions of one
argument, pure can be seen as the function which lifts functions of
zero arguments. That is, Applicative functors support a lifting
operation for any number of function arguments.
Instances must satisfy the following laws in addition to the Apply
laws:
- Identity: 
(pure id) <*> v = v - Composition: 
pure (<<<) <*> f <*> g <*> h = f <*> (g <*> h) - Homomorphism: 
(pure f) <*> (pure x) = pure (f x) - Interchange: 
u <*> (pure y) = (pure (_ $ y)) <*> u 
Members
pure :: forall a. a -> f a
Instances
Applicative (Function r)Applicative Array
#Apply
class (Functor f) <= Apply f  whereThe Apply class provides the (<*>) which is used to apply a function
to an argument under a type constructor.
Apply can be used to lift functions of two or more arguments to work on
values wrapped with the type constructor f. It might also be understood
in terms of the lift2 function:
lift2 :: forall f a b c. Apply f => (a -> b -> c) -> f a -> f b -> f c
lift2 f a b = f <$> a <*> b
(<*>) is recovered from lift2 as lift2 ($). That is, (<*>) lifts
the function application operator ($) to arguments wrapped with the
type constructor f.
Instances must satisfy the following law in addition to the Functor
laws:
- Associative composition: 
(<<<) <$> f <*> g <*> h = f <*> (g <*> h) 
Formally, Apply represents a strong lax semi-monoidal endofunctor.
Members
apply :: forall b a. f (a -> b) -> f a -> f b
Instances
Apply (Function r)Apply Array
#Bind
class (Apply m) <= Bind m  whereThe Bind type class extends the Apply type class with a
"bind" operation (>>=) which composes computations in sequence, using
the return value of one computation to determine the next computation.
The >>= operator can also be expressed using do notation, as follows:
x >>= f = do y <- x
             f y
where the function argument of f is given the name y.
Instances must satisfy the following law in addition to the Apply
laws:
- Associativity: 
(x >>= f) >>= g = x >>= (\k -> f k >>= g) 
Associativity tells us that we can regroup operations which use do
notation so that we can unambiguously write, for example:
do x <- m1
   y <- m2 x
   m3 x y
Members
bind :: forall b a. m a -> (a -> m b) -> m b
Instances
Bind (Function r)Bind Array
#BooleanAlgebra
class (HeytingAlgebra a) <= BooleanAlgebra a The BooleanAlgebra type class represents types that behave like boolean
values.
Instances should satisfy the following laws in addition to the
HeytingAlgebra law:
- Excluded middle:
a || not a = tt
 
Instances
BooleanAlgebra BooleanBooleanAlgebra Unit(BooleanAlgebra b) => BooleanAlgebra (a -> b)
#Bounded
class (Ord a) <= Bounded a  whereThe Bounded type class represents totally ordered types that have an
upper and lower boundary.
Instances should satisfy the following law in addition to the Ord laws:
- Bounded: 
bottom <= a <= top 
Members
top :: abottom :: a
Instances
Bounded BooleanBounded IntBounded CharCharacters fall within the Unicode range.
Bounded OrderingBounded Unit
#Category
class (Semigroupoid a) <= Category a  whereCategorys consist of objects and composable morphisms between them, and
as such are Semigroupoids, but unlike semigroupoids
must have an identity element.
Instances must satisfy the following law in addition to the
Semigroupoid law:
- Identity: 
id <<< p = p <<< id = p 
Members
id :: forall t. a t t
Instances
Category Function
#CommutativeRing
class (Ring a) <= CommutativeRing a The CommutativeRing class is for rings where multiplication is
commutative.
Instances must satisfy the following law in addition to the Ring
laws:
- Commutative multiplication: 
a * b = b * a 
Instances
CommutativeRing IntCommutativeRing NumberCommutativeRing Unit(CommutativeRing b) => CommutativeRing (a -> b)
#Discard
class Discard a  whereA class for types whose values can safely be discarded
in a do notation block.
An example is the Unit type, since there is only one
possible value which can be returned.
Members
discard :: forall b f. Bind f => f a -> (a -> f b) -> f b
Instances
Discard Unit
#DivisionRing
class (Ring a) <= DivisionRing a  whereThe DivisionRing class is for non-zero rings in which every non-zero
element has a multiplicative inverse. Division rings are sometimes also
called skew fields.
Instances must satisfy the following laws in addition to the Ring laws:
- Non-zero ring: 
one /= zero - Non-zero multiplicative inverse: 
recip a * a = a * recip a = onefor all non-zeroa 
The result of recip zero is left undefined; individual instances may
choose how to handle this case.
If a type has both DivisionRing and CommutativeRing instances, then
it is a field and should have a Field instance.
Members
recip :: a -> a
Instances
DivisionRing Number
#Eq
class Eq a  whereThe Eq type class represents types which support decidable equality.
Eq instances should satisfy the following laws:
- Reflexivity: 
x == x = true - Symmetry: 
x == y = y == x - Transitivity: if 
x == yandy == zthenx == z 
Note: The Number type is not an entirely law abiding member of this
class due to the presence of NaN, since NaN /= NaN. Additionally,
computing with Number can result in a loss of precision, so sometimes
values that should be equivalent are not.
Members
eq :: a -> a -> Boolean
Instances
Eq BooleanEq IntEq NumberEq CharEq StringEq UnitEq Void(Eq a) => Eq (Array a)
#EuclideanRing
class (CommutativeRing a) <= EuclideanRing a  whereThe EuclideanRing class is for commutative rings that support division.
The mathematical structure this class is based on is sometimes also called
a Euclidean domain.
Instances must satisfy the following laws in addition to the Ring
laws:
- Integral domain: 
one /= zero, and ifaandbare both nonzero then so is their producta * b - Euclidean function 
degree:- Nonnegativity: For all nonzero 
a,degree a >= 0 - Quotient/remainder: For all 
aandb, wherebis nonzero, letq = a / bandr = a `mod` b; thena = q*b + r, and also eitherr = zeroordegree r < degree b 
 - Nonnegativity: For all nonzero 
 - Submultiplicative euclidean function:
- For all nonzero 
aandb,degree a <= degree (a * b) 
 - For all nonzero 
 
The behaviour of division by zero is unconstrained by these laws,
meaning that individual instances are free to choose how to behave in this
case. Similarly, there are no restrictions on what the result of
degree zero is; it doesn't make sense to ask for degree zero in the
same way that it doesn't make sense to divide by zero, so again,
individual instances may choose how to handle this case.
For any EuclideanRing which is also a Field, one valid choice
for degree is simply const 1. In fact, unless there's a specific
reason not to, Field types should normally use this definition of
degree.
Members
degree :: a -> Intdiv :: a -> a -> amod :: a -> a -> a
Instances
EuclideanRing IntEuclideanRing Number
#Field
class (EuclideanRing a) <= Field a The Field class is for types that are (commutative) fields.
Instances must satisfy the following law in addition to the
EuclideanRing laws:
- Non-zero multiplicative inverse: 
a `mod` b = zerofor allaandb 
If a type has a Field instance, it should also have a DivisionRing
instance. In a future release, DivisionRing may become a superclass of
Field.
Instances
Field Number
#Functor
class Functor f  whereA Functor is a type constructor which supports a mapping operation
map.
map can be used to turn functions a -> b into functions
f a -> f b whose argument and return types use the type constructor f
to represent some computational context.
Instances must satisfy the following laws:
- Identity: 
map id = id - Composition: 
map (f <<< g) = map f <<< map g 
Members
map :: forall b a. (a -> b) -> f a -> f b
Instances
Functor (Function r)Functor Array
#HeytingAlgebra
class HeytingAlgebra a  whereThe HeytingAlgebra type class represents types that are bounded lattices with
an implication operator such that the following laws hold:
- Associativity:
a || (b || c) = (a || b) || ca && (b && c) = (a && b) && c
 - Commutativity:
a || b = b || aa && b = b && a
 - Absorption:
a || (a && b) = aa && (a || b) = a
 - Idempotent:
a || a = aa && a = a
 - Identity:
a || ff = aa && tt = a
 - Implication:
a `implies` a = tta && (a `implies` b) = a && bb && (a `implies` b) = ba `implies` (b && c) = (a `implies` b) && (a `implies` c)
 - Complemented:
not a = a `implies` ff
 
Members
conj :: a -> a -> adisj :: a -> a -> anot :: a -> a
Instances
HeytingAlgebra BooleanHeytingAlgebra Unit(HeytingAlgebra b) => HeytingAlgebra (a -> b)
#Monad
class (Applicative m, Bind m) <= Monad m The Monad type class combines the operations of the Bind and
Applicative type classes. Therefore, Monad instances represent type
constructors which support sequential composition, and also lifting of
functions of arbitrary arity.
Instances must satisfy the following laws in addition to the
Applicative and Bind laws:
- Left Identity: 
pure x >>= f = f x - Right Identity: 
x >>= pure = x 
Instances
Monad (Function r)Monad Array
#Ord
class (Eq a) <= Ord a  whereThe Ord type class represents types which support comparisons with a
total order.
Ord instances should satisfy the laws of total orderings:
- Reflexivity: 
a <= a - Antisymmetry: if 
a <= bandb <= athena = b - Transitivity: if 
a <= bandb <= cthena <= c 
Members
compare :: a -> a -> Ordering
Instances
Ord BooleanOrd IntOrd NumberOrd StringOrd CharOrd UnitOrd Void(Ord a) => Ord (Array a)Ord Ordering
#Ring
class (Semiring a) <= Ring a  whereThe Ring class is for types that support addition, multiplication,
and subtraction operations.
Instances must satisfy the following law in addition to the Semiring
laws:
- Additive inverse: 
a - a = (zero - a) + a = zero 
Members
sub :: a -> a -> a
Instances
Ring IntRing NumberRing Unit(Ring b) => Ring (a -> b)
#Semigroup
class Semigroup a  whereThe Semigroup type class identifies an associative operation on a type.
Instances are required to satisfy the following law:
- Associativity: 
(x <> y) <> z = x <> (y <> z) 
One example of a Semigroup is String, with (<>) defined as string
concatenation.
Members
append :: a -> a -> a
Instances
Semigroup StringSemigroup UnitSemigroup Void(Semigroup s') => Semigroup (s -> s')Semigroup (Array a)
#Semigroupoid
class Semigroupoid a  whereA Semigroupoid is similar to a Category but does not
require an identity element id, just composable morphisms.
Semigroupoids must satisfy the following law:
- Associativity: 
p <<< (q <<< r) = (p <<< q) <<< r 
One example of a Semigroupoid is the function type constructor (->),
with (<<<) defined as function composition.
Members
compose :: forall d c b. a c d -> a b c -> a b d
Instances
Semigroupoid Function
#Semiring
class Semiring a  whereThe Semiring class is for types that support an addition and
multiplication operation.
Instances must satisfy the following laws:
- Commutative monoid under addition:
- Associativity: 
(a + b) + c = a + (b + c) - Identity: 
zero + a = a + zero = a - Commutative: 
a + b = b + a 
 - Associativity: 
 - Monoid under multiplication:
- Associativity: 
(a * b) * c = a * (b * c) - Identity: 
one * a = a * one = a 
 - Associativity: 
 - Multiplication distributes over addition:
- Left distributivity: 
a * (b + c) = (a * b) + (a * c) - Right distributivity: 
(a + b) * c = (a * c) + (b * c) 
 - Left distributivity: 
 - Annihilation: 
zero * a = a * zero = zero 
Note: The Number and Int types are not fully law abiding
members of this class hierarchy due to the potential for arithmetic
overflows, and in the case of Number, the presence of NaN and
Infinity values. The behaviour is unspecified in these cases.
Members
add :: a -> a -> azero :: amul :: a -> a -> aone :: a
Instances
Semiring IntSemiring Number(Semiring b) => Semiring (a -> b)Semiring Unit
#Show
class Show a  whereThe Show type class represents those types which can be converted into
a human-readable String representation.
While not required, it is recommended that for any expression x, the
string show x be executable PureScript code which evaluates to the same
value as the expression x.
Members
show :: a -> String
Instances
Show BooleanShow IntShow NumberShow CharShow String(Show a) => Show (Array a)
#whenM
whenM :: forall m. Monad m => m Boolean -> m Unit -> m UnitPerform a monadic action when a condition is true, where the conditional value is also in a monadic context.
#when
when :: forall m. Applicative m => Boolean -> m Unit -> m UnitPerform an applicative action when a condition is true.
#void
void :: forall a f. Functor f => f a -> f UnitThe void function is used to ignore the type wrapped by a
Functor, replacing it with Unit and keeping only the type
information provided by the type constructor itself.
void is often useful when using do notation to change the return type
of a monadic computation:
main = forE 1 10 \n -> void do
  print n
  print (n * n)
#unlessM
unlessM :: forall m. Monad m => m Boolean -> m Unit -> m UnitPerform a monadic action unless a condition is true, where the conditional value is also in a monadic context.
#unless
unless :: forall m. Applicative m => Boolean -> m Unit -> m UnitPerform an applicative action unless a condition is true.
#unit
unit :: Unitunit is the sole inhabitant of the Unit type.
#otherwise
otherwise :: BooleanAn alias for true, which can be useful in guard clauses:
max x y | x >= y    = x
        | otherwise = y
#notEq
notEq :: forall a. Eq a => a -> a -> BooleannotEq tests whether one value is not equal to another. Shorthand for
not (eq x y).
#negate
negate :: forall a. Ring a => a -> anegate x can be used as a shorthand for zero - x.
#min
min :: forall a. Ord a => a -> a -> aTake the minimum of two values. If they are considered equal, the first argument is chosen.
#max
max :: forall a. Ord a => a -> a -> aTake the maximum of two values. If they are considered equal, the first argument is chosen.
#liftM1
liftM1 :: forall b a m. Monad m => (a -> b) -> m a -> m bliftM1 provides a default implementation of (<$>) for any
Monad, without using (<$>) as provided by the
Functor-Monad superclass relationship.
liftM1 can therefore be used to write Functor instances
as follows:
instance functorF :: Functor F where
  map = liftM1
#liftA1
liftA1 :: forall b a f. Applicative f => (a -> b) -> f a -> f bliftA1 provides a default implementation of (<$>) for any
Applicative functor, without using (<$>) as provided
by the Functor-Applicative superclass
relationship.
liftA1 can therefore be used to write Functor instances
as follows:
instance functorF :: Functor F where
  map = liftA1
#lcm
lcm :: forall a. Eq a => EuclideanRing a => a -> a -> aThe least common multiple of two values.
#join
join :: forall m a. Bind m => m (m a) -> m aCollapse two applications of a monadic type constructor into one.
#ifM
ifM :: forall m a. Bind m => m Boolean -> m a -> m a -> m aExecute a monadic action if a condition holds.
For example:
main = ifM ((< 0.5) <$> random)
         (trace "Heads")
         (trace "Tails")
#gcd
gcd :: forall a. Eq a => EuclideanRing a => a -> a -> aThe greatest common divisor of two values.
#flip
flip :: forall c b a. (a -> b -> c) -> b -> a -> cFlips the order of the arguments to a function of two arguments.
flip const 1 2 = const 2 1 = 2
#flap
flap :: forall b a f. Functor f => f (a -> b) -> a -> f bApply a value in a computational context to a value in no context.
Generalizes flip.
longEnough :: String -> Bool
hasSymbol :: String -> Bool
hasDigit :: String -> Bool
password :: String
validate :: String -> List Bool
validate = flap [longEnough, hasSymbol, hasDigit]
flap (-) 3 4 == 1
threeve <$> Just 1 <@> 'a' <*> Just true == Just (threeve 1 'a' true)
#const
const :: forall b a. a -> b -> aReturns its first argument and ignores its second.
const 1 "hello" = 1
#comparing
comparing :: forall b a. Ord b => (a -> b) -> (a -> a -> Ordering)Compares two values by mapping them to a type with an Ord instance.
#clamp
clamp :: forall a. Ord a => a -> a -> a -> aClamp a value between a minimum and a maximum. For example:
let f = clamp 0 10
f (-5) == 0
f 5    == 5
f 15   == 10
#between
between :: forall a. Ord a => a -> a -> a -> BooleanTest whether a value is between a minimum and a maximum (inclusive). For example:
let f = between 0 10
f 0    == true
f (-5) == false
f 5    == true
f 10   == true
f 15   == false
#ap
ap :: forall b a m. Monad m => m (a -> b) -> m a -> m bap provides a default implementation of (<*>) for any
Monad, without using (<*>) as provided by the
Apply-Monad superclass relationship.
ap can therefore be used to write Apply instances as
follows:
instance applyF :: Apply F where
  apply = ap
#absurd
absurd :: forall a. Void -> a#(||)
Operator alias for Data.HeytingAlgebra.disj (right-associative / precedence 2)
#(>>>)
Operator alias for Control.Semigroupoid.composeFlipped (right-associative / precedence 9)
#(>>=)
Operator alias for Control.Bind.bind (left-associative / precedence 1)
#(>=>)
Operator alias for Control.Bind.composeKleisli (right-associative / precedence 1)
#(>=)
Operator alias for Data.Ord.greaterThanOrEq (left-associative / precedence 4)
#(>)
Operator alias for Data.Ord.greaterThan (left-associative / precedence 4)
#(==)
Operator alias for Data.Eq.eq (non-associative / precedence 4)
#(=<<)
Operator alias for Control.Bind.bindFlipped (right-associative / precedence 1)
#(<@>)
Operator alias for Data.Functor.flap (left-associative / precedence 4)
#(<>)
Operator alias for Data.Semigroup.append (right-associative / precedence 5)
#(<=<)
Operator alias for Control.Bind.composeKleisliFlipped (right-associative / precedence 1)
#(<=)
Operator alias for Data.Ord.lessThanOrEq (left-associative / precedence 4)
#(<<<)
Operator alias for Control.Semigroupoid.compose (right-associative / precedence 9)
#(<*>)
Operator alias for Control.Apply.apply (left-associative / precedence 4)
#(<*)
Operator alias for Control.Apply.applyFirst (left-associative / precedence 4)
#(<$>)
Operator alias for Data.Functor.map (left-associative / precedence 4)
#(<$)
Operator alias for Data.Functor.voidRight (left-associative / precedence 4)
#(<#>)
Operator alias for Data.Functor.mapFlipped (left-associative / precedence 1)
#(<)
Operator alias for Data.Ord.lessThan (left-associative / precedence 4)
#(/=)
Operator alias for Data.Eq.notEq (non-associative / precedence 4)
#(/)
Operator alias for Data.EuclideanRing.div (left-associative / precedence 7)
#(-)
Operator alias for Data.Ring.sub (left-associative / precedence 6)
#(+)
Operator alias for Data.Semiring.add (left-associative / precedence 6)
#(*>)
Operator alias for Control.Apply.applySecond (left-associative / precedence 4)
#(*)
Operator alias for Data.Semiring.mul (left-associative / precedence 7)
#(&&)
Operator alias for Data.HeytingAlgebra.conj (right-associative / precedence 3)
#($>)
Operator alias for Data.Functor.voidLeft (left-associative / precedence 4)
#($)
Operator alias for Data.Function.apply (right-associative / precedence 0)
Applies a function to an argument: the reverse of (#).
length $ groupBy productCategory $ filter isInStock $ products
is equivalent to:
length (groupBy productCategory (filter isInStock products))
Or another alternative equivalent, applying chain of composed functions to a value:
length <<< groupBy productCategory <<< filter isInStock $ products
#(#)
Operator alias for Data.Function.applyFlipped (left-associative / precedence 1)
Applies an argument to a function: the reverse of ($).
products # filter isInStock # groupBy productCategory # length
is equivalent to:
length (groupBy productCategory (filter isInStock products))
Or another alternative equivalent, applying a value to a chain of composed functions:
products # filter isInStock >>> groupBy productCategory >>> length
#type (~>)
Operator alias for Data.NaturalTransformation.NaturalTransformation (right-associative / precedence 4)
Re-exports from Type.Proxy 
#Proxy3 Source
#Proxy2 Source
Re-exports from Unsafe.Coerce 
#unsafeCoerce Source
unsafeCoerce :: forall b a. a -> bA highly unsafe function, which can be used to persuade the type system that any type is the same as any other type. When using this function, it is your (that is, the caller's) responsibility to ensure that the underlying representation for both types is the same.
One application for this function is to avoid doing work that you know is a
no-op because of newtypes. For example, if you have an Array (Conj a) and you
want an Array (Disj a), you could do Data.Array.map (runConj >>> Disj), but
this performs an unnecessary traversal. unsafeCoerce accomplishes the same
for free.
It is highly recommended to define specializations of this function rather than using it as-is. For example:
mapConjToDisj :: forall a. Array (Conj a) -> Array (Disj a)
mapConjToDisj = unsafeCoerce
This way, you won't have any nasty surprises due to the inferred type being different to what you expected.
- Modules
 - Stuff
 
The
Functorinstance allows functions to transform the contents of aRightwith the<$>operator:Leftvalues are untouched: