Skip to content
This repository has been archived by the owner on Jun 25, 2020. It is now read-only.

0b1kn00b/arrowlets

Repository files navigation

Then

_____________________________________________

then(f,g):: g(f(x))
_____________________________________________
Arrowlet<A,B> -> Arrowlet<B,C> -> Arrowlet<A,C>;

First

_____________________________________________

                / - f - \
first(f)::(l,r)<         >(f(l),r))
                \ - - - /
_____________________________________________
Arrowlet<A,B> -> Arrowlet<Tuple2<A,C>,Tuple2<B,C>>

Second

_____________________________________________

                  / - - - \          
second(g):: (l,r)<         >(l,g(r))
                  \ - g - /

_____________________________________________
Arrowlet<A,B> -> Arrowlet<Tuple2<C,A>,Tuple2<C,B>>

Pair

_____________________________________________

                  / - f - \
pair(f,g):: (l,r)<         >(f(l),g(r)))
                  \ - g - /

_____________________________________________
    f         ->      g        -> ((l,r) -> (f(l),g(r))
Arrowlet<A,B> -> Arrowlet<C,D> -> Arrowlet<Tuple2<A,C>, Tuple2<B,D>>

Split _____________________________________________

                   / - f - \
split(f,g):: (x,x)<         >(f(x),g(x)))
                   \ - g - /

_____________________________________________
Arrowlet<A, B> -> Arrowlet<A, C> -> Arrowlet<A, Tuple2<B,C>>

Join

_____________________________________________

join(f,g):: x - f - g - \   
                 \ - - - - > (f(x),g(f(x)))

_____________________________________________
Arrowlet<A,B> -> Arrowlet<B,C> -> Arrowlet<A,Tuple2<B,C>>

Tie

_____________________________________________

              / - - - \   -\
tie(f,g):: x <           g  > g(x,f(x))
              \ - f - /   -/

_____________________________________________
Arrowlet<A,B> -> Arrowlet<Tuple2<A,B>,C> -> Arrowlet<A,C>

Repeat / Animate

_____________________________________________

                <-<-  [left]
                \ /
repeat(f):: x -> f     
                   \_ [right] f(x)

_____________________________________________
Arrowlet<I,tink.Either<I,O> -> Arrowlet<I,O>

Either

_____________________________________________


                / - f - \
split(f,g):: x <         > f(x) || g(x)
                \ - g - /

_____________________________________________
Arrowlet<A,B> -> Arrowlet<A,B> -> Arrowlet<A,B>

Done