fact: Definition mapGen {A B} (f : A -> G B) (l : list A) : G (list B) := bindGen (foldProd (fun acc a => bindGen (f a) (fun b => returnGen (cons b acc))) l nil) (fun l => returnGen (rev l)).
imports: String List RoseTrees Show State Producer Generators Classes DependentClasses