var searchIndex = {}; searchIndex["operational"] = {"doc":"The operational library makes it easy to implement monads with tricky control flow.","items":[[3,"Kleisli","operational","The Kleisli arrow from `A` to `Program<I, B>`.",null,null],[4,"Program","","Represents a program, i.e. a sequence of instructions.",null,null],[13,"Pure","","The case `Pure(a)` means that the program contains no instructions and just returns the result `a`.",0,null],[13,"Then","","The case `Then(instr, k)` means that the first instruction is `instr` and the remaining program is given by the kleisli arrow `k`.",0,null],[5,"point","","Using a value, constructs the empty program,\ni.e. a program that directly returns that value.",null,{"inputs":[{"name":"a"}],"output":{"name":"program"}}],[5,"lift","","Lift an instruction into a program.",null,{"inputs":[{"name":"i"}],"output":{"name":"program"}}],[0,"instr","","Contains the `Instr` trait, and a few useful utilities for working with instructions.",null,null],[3,"Identity","operational::instr","The instruction that does nothing.",null,null],[12,"0","","",1,null],[4,"Coproduct","","Combines two instruction sets into one.",null,null],[13,"Left","","",2,null],[13,"Right","","",2,null],[5,"identity","","",null,{"inputs":[{"name":"a"}],"output":{"name":"program"}}],[8,"Instr","","The trait for an instruction set.",null,null],[16,"Return","","",3,null],[11,"new","operational","Creates the identity arrow.",4,{"inputs":[],"output":{"name":"kleisli"}}],[11,"append","","Appends the given function to the tail of the arrow.\nThis corresponds to closure composition at the codomain (post-composition).",4,null],[11,"run","","Given an input, runs the arrow to completion and return\nthe resulting program.",4,null],[11,"and_then","","Appends a continuation to a program. Which means,\ngiven a function from `A` to `Program<I, B>`,\npasses the return value of the program to the function,\nand returns the resulting program.",0,null],[11,"map","","Modifies the return value of the program.\nSeen differently, it lifts a function from\n`A` to `B` into a function from `Program<I, A>`\nto `Program<I, B>`.",0,null],[11,"eq","","",0,null],[11,"fmt","","",0,null],[14,"seq!","","Provides a convient syntax for monadic computations.",null,null]],"paths":[[4,"Program"],[3,"Identity"],[4,"Coproduct"],[8,"Instr"],[3,"Kleisli"]]}; initSearch(searchIndex);