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