cat/instances/applicative
Applicative instances: Option, List, Reader, Writer.
Values
pub fn list_applicative(
,
) -> applicative.Applicative(
types.ListF,
a,
b,
List(a),
List(b),
List(fn(a) -> b),
)
Instance for Applicative List.
instance Applicative [] where
// pure :: a -> [a]
pure x = [x]
// (<*>) :: [a -> b] -> [a] -> [b]
fs <*> xs = [f x | f <- fs, x <- xs]
Examples
[1, 2, 3]
|> {
[fn(x) { x * 2 }, fn(x) { x + 10 }]
|> apply(list_applicative())
}
// -> [2, 4, 6, 11, 12, 13]
pub fn option_applicative(
,
) -> applicative.Applicative(
types.OptionF,
a,
b,
option.Option(a),
option.Option(b),
option.Option(fn(a) -> b),
)
Instance for Applicative Option.
instance Applicative Maybe where
// pure :: a -> Maybe a
pure x = Just x
// (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b
Nothing <*> _ = Nothing
Just(f) <*> m = fmap f m
Examples
9
|> { option_applicative() |> pure() }
// -> Some(9)
let option_f =
int.to_string
|> { option_applicative() |> pure() }
|> { option_applicative() |> apply() }
None
|> option_f()
// -> None
Some(12)
|> option_f()
// -> Some("12")
pub fn reader_applicative(
,
) -> applicative.Applicative(
types.ReaderF(r),
a,
b,
cat.Reader(r, a),
cat.Reader(r, b),
cat.Reader(r, fn(a) -> b),
)
Applicative instance for Reader.
pub fn writer_applicative(
,
) -> applicative.Applicative(
types.WriterF,
a,
b,
cat.Writer(a),
cat.Writer(b),
cat.Writer(fn(a) -> b),
)
Applicative instance for Writer.