{"efVersion":"0.10.5","efModuleName":["Control","Monad","Rec","Class"],"efExports":[{"TypeRef":["Step",["Loop","Done"]]},{"TypeClassRef":"MonadRec"},{"ValueRef":{"Ident":"forever"}},{"ValueRef":{"Ident":"tailRec"}},{"ValueRef":{"Ident":"tailRecM"}},{"ValueRef":{"Ident":"tailRecM2"}},{"ValueRef":{"Ident":"tailRecM3"}},{"TypeInstanceRef":{"Ident":"functorStep"}},{"TypeInstanceRef":{"Ident":"bifunctorStep"}},{"TypeInstanceRef":{"Ident":"monadRecIdentity"}},{"TypeInstanceRef":{"Ident":"monadRecEff"}},{"TypeInstanceRef":{"Ident":"monadRecEither"}}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Monad","Eff"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[13,27],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[13,30]},[],{"TypeRef":["Eff",[]]}]},{"PositionedDeclarationRef":[{"start":[13,32],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[13,38]},[],{"ValueRef":{"Ident":"untilE"}}]}]},"eiImportedAs":null},{"eiModule":["Control","Monad","Eff","Unsafe"],"eiImportType":{"Implicit":[]},"eiImportedAs":["U"]},{"eiModule":["Control","Monad","ST"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[15,26],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[15,28]},[],{"TypeRef":["ST",[]]}]},{"PositionedDeclarationRef":[{"start":[15,30],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[15,35]},[],{"ValueRef":{"Ident":"runST"}}]},{"PositionedDeclarationRef":[{"start":[15,37],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[15,45]},[],{"ValueRef":{"Ident":"newSTRef"}}]},{"PositionedDeclarationRef":[{"start":[15,47],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[15,56]},[],{"ValueRef":{"Ident":"readSTRef"}}]},{"PositionedDeclarationRef":[{"start":[15,58],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[15,68]},[],{"ValueRef":{"Ident":"writeSTRef"}}]}]},"eiImportedAs":null},{"eiModule":["Data","Either"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[17,21],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[17,31]},[],{"TypeRef":["Either",null]}]}]},"eiImportedAs":null},{"eiModule":["Data","Identity"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[18,23],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[18,35]},[],{"TypeRef":["Identity",null]}]}]},"eiImportedAs":null},{"eiModule":["Data","Bifunctor"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[19,24],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[19,39]},[],{"TypeClassRef":"Bifunctor"}]}]},"eiImportedAs":null},{"eiModule":["Partial","Unsafe"],"eiImportType":{"Explicit":[{"PositionedDeclarationRef":[{"start":[21,24],"name":"/Users/nicholaw/git/purescript-suggest/bower_components/purescript-tailrec/src/Control/Monad/Rec/Class.purs","end":[21,37]},[],{"ValueRef":{"Ident":"unsafePartial"}}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Step","edTypeKind":{"tag":"FunKind","contents":[{"tag":"NamedKind","contents":[["Prim"],"Type"]},{"tag":"FunKind","contents":[{"tag":"NamedKind","contents":[["Prim"],"Type"]},{"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":[[["a",{"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"tag":"NamedKind","contents":[["Prim"],"Type"]}]],[["Loop",[{"tag":"TypeVar","contents":"a"}]],["Done",[{"tag":"TypeVar","contents":"b"}]]]]}}},{"EDDataConstructor":{"edDataCtorName":"Loop","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Step","edDataCtorType":{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDDataConstructor":{"edDataCtorName":"Done","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Step","edDataCtorType":{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"b"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDType":{"edTypeName":"MonadRec","edTypeKind":{"tag":"FunKind","contents":[{"tag":"FunKind","contents":[{"tag":"NamedKind","contents":[["Prim"],"Type"]},{"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":{"TypeSynonym":[]}}},{"EDTypeSynonym":{"edTypeSynonymName":"MonadRec","edTypeSynonymArguments":[["m",null]],"edTypeSynonymType":{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"tag":"RCons","contents":["tailRecM",{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},{"tag":"RCons","contents":["__superclass_Control.Monad.Monad_0",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"tag":"REmpty","contents":[]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad"],"Monad"]},{"tag":"TypeVar","contents":"m"}]}]},{"tag":"REmpty","contents":[]}]}]}]}}},{"EDClass":{"edClassName":"MonadRec","edClassTypeArguments":[["m",null]],"edClassMembers":[[{"Ident":"tailRecM"},{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}]],"edClassConstraints":[{"constraintClass":[["Control","Monad"],"Monad"],"constraintArgs":[{"tag":"TypeVar","contents":"m"}],"constraintData":null}],"edFunctionalDependencies":[]}},{"EDValue":{"edValueName":{"Ident":"forever"},"edValueType":{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"ForAll","contents":["m",{"tag":"ConstrainedType","contents":[[{"constraintClass":[["Control","Monad","Rec","Class"],"MonadRec"],"constraintArgs":[{"tag":"TypeVar","contents":"m"}],"constraintData":null}],{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"a"}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"b"}]}]}]},112]},113]},114]}}},{"EDValue":{"edValueName":{"Ident":"tailRec"},"edValueType":{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]},52]},53]}}},{"EDValue":{"edValueName":{"Ident":"tailRecM"},"edValueType":{"tag":"ForAll","contents":["m",{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"ConstrainedType","contents":[[{"constraintClass":[["Control","Monad","Rec","Class"],"MonadRec"],"constraintArgs":[{"tag":"TypeVar","contents":"m"}],"constraintData":null}],{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeVar","contents":"b"}]}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"b"}]}]}]}]},0]},1]},2]}}},{"EDValue":{"edValueName":{"Ident":"tailRecM2"},"edValueType":{"tag":"ForAll","contents":["c",{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"ForAll","contents":["m",{"tag":"ConstrainedType","contents":[[{"constraintClass":[["Control","Monad","Rec","Class"],"MonadRec"],"constraintArgs":[{"tag":"TypeVar","contents":"m"}],"constraintData":null}],{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"b"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"tag":"RCons","contents":["a",{"tag":"TypeVar","contents":"a"},{"tag":"RCons","contents":["b",{"tag":"TypeVar","contents":"b"},{"tag":"REmpty","contents":[]}]}]}]}]},{"tag":"TypeVar","contents":"c"}]}]}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"b"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"c"}]}]}]}]}]},3]},4]},5]},6]}}},{"EDValue":{"edValueName":{"Ident":"tailRecM3"},"edValueType":{"tag":"ForAll","contents":["d",{"tag":"ForAll","contents":["c",{"tag":"ForAll","contents":["b",{"tag":"ForAll","contents":["a",{"tag":"ForAll","contents":["m",{"tag":"ConstrainedType","contents":[[{"constraintClass":[["Control","Monad","Rec","Class"],"MonadRec"],"constraintArgs":[{"tag":"TypeVar","contents":"m"}],"constraintData":null}],{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"b"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"c"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"tag":"RCons","contents":["a",{"tag":"TypeVar","contents":"a"},{"tag":"RCons","contents":["b",{"tag":"TypeVar","contents":"b"},{"tag":"RCons","contents":["c",{"tag":"TypeVar","contents":"c"},{"tag":"REmpty","contents":[]}]}]}]}]}]},{"tag":"TypeVar","contents":"d"}]}]}]}]}]}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"a"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"b"}]},{"tag":"TypeApp","contents":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"tag":"TypeVar","contents":"c"}]},{"tag":"TypeApp","contents":[{"tag":"TypeVar","contents":"m"},{"tag":"TypeVar","contents":"d"}]}]}]}]}]}]},11]},12]},13]},14]},15]}}},{"EDInstance":{"edInstanceClassName":[["Data","Functor"],"Functor"],"edInstanceName":{"Ident":"functorStep"},"edInstanceTypes":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]},{"tag":"TypeVar","contents":"a"}]}],"edInstanceConstraints":[]}},{"EDInstance":{"edInstanceClassName":[["Data","Bifunctor"],"Bifunctor"],"edInstanceName":{"Ident":"bifunctorStep"},"edInstanceTypes":[{"tag":"TypeConstructor","contents":[["Control","Monad","Rec","Class"],"Step"]}],"edInstanceConstraints":[]}},{"EDInstance":{"edInstanceClassName":[["Control","Monad","Rec","Class"],"MonadRec"],"edInstanceName":{"Ident":"monadRecIdentity"},"edInstanceTypes":[{"tag":"TypeConstructor","contents":[["Data","Identity"],"Identity"]}],"edInstanceConstraints":[]}},{"EDInstance":{"edInstanceClassName":[["Control","Monad","Rec","Class"],"MonadRec"],"edInstanceName":{"Ident":"monadRecEff"},"edInstanceTypes":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Control","Monad","Eff"],"Eff"]},{"tag":"TypeVar","contents":"eff"}]}],"edInstanceConstraints":[]}},{"EDInstance":{"edInstanceClassName":[["Control","Monad","Rec","Class"],"MonadRec"],"edInstanceName":{"Ident":"monadRecEither"},"edInstanceTypes":[{"tag":"TypeApp","contents":[{"tag":"TypeConstructor","contents":[["Data","Either"],"Either"]},{"tag":"TypeVar","contents":"e"}]}],"edInstanceConstraints":[]}}]}