operational
pub struct Kleisli<'a, I: Instr<Param=A>, A, B> { // some fields omitted }
impl<'a, I: Instr<Param=A>, A> Kleisli<'a, I, A, A>
fn new() -> Kleisli<'a, I, A, A>
impl<'a, I: 'a + Instr<Param=A>, A, B> Kleisli<'a, I, A, B>
fn append<F, C>(self, f: F) -> Kleisli<'a, I, A, C> where F: 'a + Fn(B) -> Program<'a, I, C>
fn run(self, a: A) -> Program<'a, I, B>