And the last piece of Puzzle 4 is the State monad which can be "tested" with:

type MyState s = (((->) s) :.: ((,) s))
-- MyState s a = s -> (s, a)

inc = Comp1 (\s -> (s+1, s+1))
double = Comp1 (\s -> (s*2, s*2))

computation = do
a <- inc
b <- double
return b

unComp1 computation 5 -- which returns (12, 12)