sanctuary-identity
Identity is the simplest container type: a value of type Identity a
always contains exactly one value, of type a
.
Identity a
satisfies the following Fantasy Land specifications:
> const Useless = > const isTypeClass = type x === 'sanctuary-type-classes/TypeClass@1' > S S 'Setoid ✅ * ' // if ‘a’ satisfies Setoid 'Ord ✅ * ' // if ‘a’ satisfies Ord 'Semigroupoid ❌ ' 'Category ❌ ' 'Semigroup ✅ * ' // if ‘a’ satisfies Semigroup 'Monoid ❌ ' 'Group ❌ ' 'Filterable ❌ ' 'Functor ✅ ' 'Bifunctor ❌ ' 'Profunctor ❌ ' 'Apply ✅ ' 'Applicative ✅ ' 'Chain ✅ ' 'ChainRec ✅ ' 'Monad ✅ ' 'Alt ❌ ' 'Plus ❌ ' 'Alternative ❌ ' 'Foldable ✅ ' 'Traversable ✅ ' 'Extend ✅ ' 'Comonad ✅ ' 'Contravariant ❌ '
Identity :: a -> Identity a
Identity's sole data constructor. Additionally, it serves as the Identity type representative.
>
Identity.fantasy-land/of :: a -> Identity a
of (Identity) (x)
is equivalent to Identity (x)
.
> S 42
Identity.fantasy-land/chainRec :: ((a -> c, b -> c, a) -> Identity c, a) -> Identity b
> Z > Z
Identity#@@show :: Showable a => Identity a ~> () -> String
show (Identity (x))
is equivalent to 'Identity (' + show (x) + ')'
.
> 'Identity (["foo", "bar", "baz"])'
Identity#fantasy-land/equals :: Setoid a => Identity a ~> Identity a -> Boolean
Identity (x)
is equal to Identity (y)
iff x
is equal to y
according to Z.equals
.
> S true > S false
Identity#fantasy-land/lte :: Ord a => Identity a ~> Identity a -> Boolean
Identity (x)
is less than or equal to Identity (y)
iff x
is
less than or equal to y
according to Z.lte
.
> S
Identity#fantasy-land/concat :: Semigroup a => Identity a ~> Identity a -> Identity a
concat (Identity (x)) (Identity (y))
is equivalent to
Identity (concat (x) (y))
.
> S
Identity#fantasy-land/map :: Identity a ~> (a -> b) -> Identity b
map (f) (Identity (x))
is equivalent to Identity (f (x))
.
> S
Identity#fantasy-land/ap :: Identity a ~> Identity (a -> b) -> Identity b
ap (Identity (f)) (Identity (x))
is equivalent to Identity (f (x))
.
> S
Identity#fantasy-land/chain :: Identity a ~> (a -> Identity b) -> Identity b
chain (f) (Identity (x))
is equivalent to f (x)
.
> S
Identity#fantasy-land/reduce :: Identity a ~> ((b, a) -> b, b) -> b
reduce (f) (x) (Identity (y))
is equivalent to f (x) (y)
.
> S 1 2 3 1 2 3 4 5 6
Identity#fantasy-land/traverse :: Applicative f => Identity a ~> (TypeRep f, a -> f b) -> f (Identity b)
traverse (_) (f) (Identity (x))
is equivalent to
map (Identity) (f (x))
.
> S x + 1 x + 2 x + 3
Identity#fantasy-land/extend :: Identity a ~> (Identity a -> b) -> Identity b
extend (f) (Identity (x))
is equivalent to
Identity (f (Identity (x)))
.
> S
Identity#fantasy-land/extract :: Identity a ~> () -> a
extract (Identity (x))
is equivalent to x
.
> S42