[{"name":"Lisa","comment":"\n\n    # Lisa\n\n    A simple lisp\n    Example:\n    ```\n    (defunc fib-recurse (n)\n        (var a 0) (var b 1) (var f 1)\n        (defunc calc-fib (i)\n            (if (<= i n)\n                (do\n                    (set f (+ a b))\n                    (set a b)\n                    (set b f)\n                    (calc-fib (+ i 1)))\n                f))\n        (calc-fib 2))\n    (defunc fib-while (n)\n        (var a 0) (var b 1) (var f 1)\n        (var i 2)\n        (while (<= i n)\n            (set f (+ a b))\n            (set a b)\n            (set b f)\n            (set i (+ i 1))\n            f))\n    (= (fib-recurse 10) (fib-while 10) 55)\n    ```\n\n    @docs parseProgram\n    @docs parseProgramToJson\n    @docs parseExpression\n    @docs parseExpressionToJson\n\n","unions":[],"aliases":[],"values":[{"name":"parseExpression","comment":" Parse a string into an expression\n","type":"String.String -> Lisa.Process.Context -> Result.Result Lisa.Common.Error (List.List Lisa.Process.ExprNode)"},{"name":"parseExpressionToJson","comment":" Parse a string into a Json representation of an expression\n","type":"String.String -> Lisa.Process.Context -> Json.Encode.Value"},{"name":"parseProgram","comment":" Parse a string into a program\n","type":"String.String -> Lisa.Process.Context -> Result.Result Lisa.Common.Error (List.List Lisa.Process.ExprNode)"},{"name":"parseProgramToJson","comment":" Parse a string into a Json representation of a program\n","type":"String.String -> Lisa.Process.Context -> Json.Encode.Value"}],"binops":[]},{"name":"Lisa.Common","comment":"\n\n@docs Error\n@docs LocatedNode\n@docs Location\n@docs Recoverable(..)\n@docs encodeError\n@docs encodeResult\n@docs encodeWithLocation\n@docs errNode\n@docs foldlListResult\n@docs foldrListResult\n@docs mapListResult\n@docs mapNode\n@docs nonRecovErrNode\n@docs nonRecovError\n\n","unions":[{"name":"Recoverable","comment":"","args":[],"cases":[["Recoverable",[]],["Nonrecoverable",[]]]}],"aliases":[{"name":"Error","comment":"","args":[],"type":"{ recoverable : Lisa.Common.Recoverable, loc : Lisa.Common.Location, msg : String.String }"},{"name":"LocatedNode","comment":"","args":["a"],"type":"{ loc : Lisa.Common.Location, node : a }"},{"name":"Location","comment":"","args":[],"type":"{ start : ( Basics.Int, Basics.Int ), end : ( Basics.Int, Basics.Int ) }"}],"values":[{"name":"encodeError","comment":"","type":"Lisa.Common.Error -> Json.Encode.Value"},{"name":"encodeResult","comment":"","type":"(a -> Json.Encode.Value) -> Result.Result Lisa.Common.Error a -> Json.Encode.Value"},{"name":"encodeWithLocation","comment":"","type":"Lisa.Common.Location -> List.List ( String.String, Json.Encode.Value ) -> Json.Encode.Value"},{"name":"errNode","comment":"","type":"Lisa.Common.Recoverable -> Lisa.Common.LocatedNode a -> String.String -> Lisa.Common.Error"},{"name":"foldlListResult","comment":"","type":"(a -> b -> Result.Result e b) -> b -> List.List a -> Result.Result e b"},{"name":"foldrListResult","comment":"","type":"(a -> b -> Result.Result e b) -> b -> List.List a -> Result.Result e b"},{"name":"mapListResult","comment":"","type":"(a -> Result.Result e b) -> List.List a -> Result.Result e (List.List b)"},{"name":"mapNode","comment":"","type":"Lisa.Common.LocatedNode a -> b -> Lisa.Common.LocatedNode b"},{"name":"nonRecovErrNode","comment":"","type":"Lisa.Common.LocatedNode a -> String.String -> Lisa.Common.Error"},{"name":"nonRecovError","comment":"","type":"Lisa.Common.Location -> String.String -> Lisa.Common.Error"}],"binops":[]},{"name":"Lisa.Parser","comment":"\n\n@docs AstNode\n@docs SExpr\n@docs parse\n\n","unions":[{"name":"SExpr","comment":" ","args":[],"cases":[["List",["List.List Lisa.Parser.AstNode"]],["Symbol",["String.String"]],["Str",["String.String"]],["Num",["Basics.Float"]]]}],"aliases":[{"name":"AstNode","comment":" ","args":[],"type":"Lisa.Common.LocatedNode Lisa.Parser.SExpr"}],"values":[{"name":"parse","comment":" ","type":"String.String -> Result.Result Lisa.Common.Error (List.List Lisa.Parser.AstNode)"}],"binops":[]},{"name":"Lisa.Process","comment":"\n\n@docs Context\n@docs Expr\n@docs ExprNode\n@docs MacroHandler\n@docs encodeExpr\n@docs processExpr\n@docs processProgram\n\n","unions":[{"name":"Context","comment":"\n\n    This is sort of strange in order to fix a problem with recursive type aliases.\n\n","args":[],"cases":[]},{"name":"Expr","comment":" ","args":[],"cases":[["SetVar",["Lisa.Process.SymbolNode","Lisa.Process.ExprNode"]],["GetVar",["String.String"]],["FuncCall",["Lisa.Process.SymbolNode","List.List Lisa.Process.ExprNode"]],["If",["Lisa.Process.IfExpr"]],["Do",["List.List Lisa.Process.ExprNode"]],["While",["Lisa.Process.ExprNode","List.List Lisa.Process.ExprNode"]],["Func",["Lisa.Process.FuncDecl"]],["DefVar",["Lisa.Process.VarDecl","Lisa.Process.SymbolNode","Maybe.Maybe Lisa.Process.ExprNode"]],["DefFunc",["Lisa.Process.SymbolNode","Lisa.Process.FuncDecl"]],["StrLit",["String.String"]],["NumLit",["Basics.Float"]],["KeyLit",["Basics.Int"]],["ListLit",["List.List Lisa.Process.ExprNode"]]]}],"aliases":[{"name":"ExprNode","comment":" ","args":[],"type":"Lisa.Common.LocatedNode Lisa.Process.Expr"},{"name":"MacroHandler","comment":" ","args":[],"type":"Lisa.Process.Context -> Lisa.Common.Location -> List.List Lisa.Parser.AstNode -> Result.Result Lisa.Common.Error Lisa.Process.ExprNode"}],"values":[{"name":"encodeExpr","comment":" ","type":"Lisa.Process.ExprNode -> Json.Encode.Value"},{"name":"processExpr","comment":" ","type":"Lisa.Process.Context -> Lisa.Parser.AstNode -> Result.Result Lisa.Common.Error Lisa.Process.ExprNode"},{"name":"processProgram","comment":" ","type":"Lisa.Process.Context -> List.List Lisa.Parser.AstNode -> Result.Result Lisa.Common.Error (List.List Lisa.Process.ExprNode)"}],"binops":[]}]