var searchIndex = {}; searchIndex["ketos"] = {"doc":"Ketos is a Lisp dialect functional programming language, designed to be\na scripting and extension language for Rust programs.","items":[[0,"bytecode","ketos","Implements encoding and decoding of bytecode instruction format.",null,null],[3,"Code","ketos::bytecode","Represents a compiled bytecode function or expression.",null,null],[12,"name","","Code object name, if present; top-level expressions and lambda code\nvalues do not have a name.",0,null],[12,"consts","","Const values referenced in bytecode",0,null],[12,"code","","Function body bytecode",0,null],[12,"kw_params","","Names of keyword parameters accepted in the order in which they are\nexpected.",0,null],[12,"n_params","","Number of positional parameters accepted; this includes optional\nparameters, but excludes keyword and rest parameters, if accepted.\nOptional parameter values may be `Unbound`.",0,null],[12,"req_params","","Number of positional parameters which must not be `Unbound`.",0,null],[12,"flags","","Miscellaneous flags; see `code_flags` for bit flag values.",0,null],[3,"CodeReader","","Reads `Instruction` values from a stream of bytes.",null,null],[3,"CodeBlock","","Contains a series of bytecode instructions",null,null],[12,"jump","","Jump instruction added to the end of the block",1,null],[12,"next","","Refers to the block that immediately follows this block",1,null],[4,"Instruction","","Represents an instruction and any immediate parameters.",null,null],[13,"Load","","Load a value from the stack",2,null],[13,"LoadC","","Load a value from enclosed values",2,null],[13,"UnboundToUnit","","If value *n* on the stack is `Unbound`, replace it with `()`.",2,null],[13,"GetDef","","Load a named value from global scope",2,null],[13,"Push","","Push a value onto the stack; value is invalidated.",2,null],[13,"Unit","","Load `()` into value",2,null],[13,"True","","Load `true` into value",2,null],[13,"False","","Load `false` into value",2,null],[13,"Const","","Load a const into value",2,null],[13,"Store","","Store a value in the stack; value is invalidated.",2,null],[13,"LoadPush","","Load, then push",2,null],[13,"LoadCPush","","Load enclosed value, then push",2,null],[13,"GetDefPush","","Load a name from global scope, then push",2,null],[13,"UnitPush","","Load `()`, then push",2,null],[13,"TruePush","","Load `true`, then push",2,null],[13,"FalsePush","","Load `false`, then push",2,null],[13,"ConstPush","","Load a const, then push",2,null],[13,"SetDef","","Assign a value to a name into global scope",2,null],[13,"List","","Build a list of *n* values from the stack",2,null],[13,"Quote","","Transform value into an *n*-quoted value",2,null],[13,"Quasiquote","","Transform value into an *n*-quasiquoted value",2,null],[13,"Comma","","Transform value into an *n*-comma'd value",2,null],[13,"CommaAt","","Transform value into an *n*-comma-at'd value",2,null],[13,"BuildClosure","","Create a closure from code object in *n_const* and a list of\n*n_values* values on the stack; parameters are `(n_const, n_values)`.",2,null],[13,"Jump","","Jump to a label",2,null],[13,"JumpIf","","Jump if value is `true`",2,null],[13,"JumpIfBound","","Jump if value *n* from the stack is bound; parameters are `(label, n)`",2,null],[13,"JumpIfNot","","Jump if value is `false`",2,null],[13,"JumpIfNull","","Jump if value is `()`",2,null],[13,"JumpIfNotNull","","Jump if value is not `()`",2,null],[13,"JumpIfEq","","Jump if value is equal to top of stack",2,null],[13,"JumpIfNotEq","","Jump if value is not equal to top of stack",2,null],[13,"JumpIfEqConst","","Jump if value is equal to const; parameters are `(label, n)`",2,null],[13,"JumpIfNotEqConst","","Jump if value is not equal to const; parameters are `(label, n)`",2,null],[13,"Null","","Test whether value is `()`",2,null],[13,"NotNull","","Test whether value is not `()`",2,null],[13,"Eq","","Pops from the top of the stack and tests for equality with value.",2,null],[13,"NotEq","","Pops from the top of the stack and tesst for inequality with value.",2,null],[13,"EqConst","","Tests value for equality with const *n*",2,null],[13,"NotEqConst","","Tests value for inequality with const *n*",2,null],[13,"Not","","Negate boolean value",2,null],[13,"Inc","","Increment integer value",2,null],[13,"Dec","","Decrement integer value",2,null],[13,"Append","","Append value to list on top of stack; result will be in value",2,null],[13,"First","","Take first element of list and assign to value",2,null],[13,"Tail","","Take tail of list and assign to value",2,null],[13,"Init","","Take head of list and assign to value",2,null],[13,"Last","","Take last element of list and assign to value",2,null],[13,"FirstPush","","Push first value from list",2,null],[13,"TailPush","","Push tail from list",2,null],[13,"InitPush","","Push head from list",2,null],[13,"LastPush","","Push last value from list",2,null],[13,"CallSys","","Call system function *n* with known number of arguments on stack.\nOnly functions with `Exact` arity may be called in this manner.",2,null],[13,"CallSysArgs","","Call system function with *n* arguments on the stack;\nparameters are `(sys_fn, n_args)`.",2,null],[13,"CallConst","","Call const function with arguments on the stack;\nparameters are `(const, n_args)`.",2,null],[13,"Call","","Call function on the stack with *n* arguments from the top of the stack",2,null],[13,"Apply","","Call function on the stack with *n* stack arguments and additional\narguments from list value",2,null],[13,"CallSelf","","Call current code object with *n* arguments from the top of the stack;\nthis does not perform a tail call",2,null],[13,"TailCall","","Perform tail-recursive call with *n* arguments from the top of the stack",2,null],[13,"Skip","","Remove *n* values from the top of the stack",2,null],[13,"Return","","Return value from function",2,null],[4,"JumpInstruction","","Partial representation of jump `Instruction` variants before label values\nhave been determined.",null,null],[13,"Jump","","",3,null],[13,"JumpIf","","",3,null],[13,"JumpIfBound","","",3,null],[13,"JumpIfNot","","",3,null],[13,"JumpIfNull","","",3,null],[13,"JumpIfNotNull","","",3,null],[13,"JumpIfEq","","",3,null],[13,"JumpIfNotEq","","",3,null],[13,"JumpIfEqConst","","",3,null],[13,"JumpIfNotEqConst","","",3,null],[0,"opcodes","","Opcode values of compiled bytecode.",null,null],[17,"LOAD","ketos::bytecode::opcodes","",null,null],[17,"LOAD_0","","",null,null],[17,"LOAD_1","","",null,null],[17,"LOAD_2","","",null,null],[17,"LOAD_3","","",null,null],[17,"LOADC","","",null,null],[17,"LOADC_0","","",null,null],[17,"LOADC_1","","",null,null],[17,"LOADC_2","","",null,null],[17,"LOADC_3","","",null,null],[17,"UNBOUND_TO_UNIT","","",null,null],[17,"UNBOUND_TO_UNIT_0","","",null,null],[17,"UNBOUND_TO_UNIT_1","","",null,null],[17,"UNBOUND_TO_UNIT_2","","",null,null],[17,"UNBOUND_TO_UNIT_3","","",null,null],[17,"GET_DEF","","",null,null],[17,"PUSH","","",null,null],[17,"UNIT","","",null,null],[17,"TRUE","","",null,null],[17,"FALSE","","",null,null],[17,"CONST","","",null,null],[17,"CONST_0","","",null,null],[17,"CONST_1","","",null,null],[17,"CONST_2","","",null,null],[17,"CONST_3","","",null,null],[17,"CONST_4","","",null,null],[17,"CONST_5","","",null,null],[17,"CONST_6","","",null,null],[17,"CONST_7","","",null,null],[17,"STORE","","",null,null],[17,"STORE_0","","",null,null],[17,"STORE_1","","",null,null],[17,"STORE_2","","",null,null],[17,"STORE_3","","",null,null],[17,"LOAD_PUSH","","",null,null],[17,"LOAD_PUSH_0","","",null,null],[17,"LOAD_PUSH_1","","",null,null],[17,"LOAD_PUSH_2","","",null,null],[17,"LOAD_PUSH_3","","",null,null],[17,"LOADC_PUSH","","",null,null],[17,"LOADC_PUSH_0","","",null,null],[17,"LOADC_PUSH_1","","",null,null],[17,"LOADC_PUSH_2","","",null,null],[17,"LOADC_PUSH_3","","",null,null],[17,"GET_DEF_PUSH","","",null,null],[17,"UNIT_PUSH","","",null,null],[17,"TRUE_PUSH","","",null,null],[17,"FALSE_PUSH","","",null,null],[17,"CONST_PUSH","","",null,null],[17,"CONST_PUSH_0","","",null,null],[17,"CONST_PUSH_1","","",null,null],[17,"CONST_PUSH_2","","",null,null],[17,"CONST_PUSH_3","","",null,null],[17,"CONST_PUSH_4","","",null,null],[17,"CONST_PUSH_5","","",null,null],[17,"CONST_PUSH_6","","",null,null],[17,"CONST_PUSH_7","","",null,null],[17,"CONST_STORE","","",null,null],[17,"CONST_STORE_0","","",null,null],[17,"CONST_STORE_1","","",null,null],[17,"CONST_STORE_2","","",null,null],[17,"CONST_STORE_3","","",null,null],[17,"SET_DEF","","",null,null],[17,"LIST","","",null,null],[17,"QUOTE","","",null,null],[17,"QUOTE_1","","",null,null],[17,"QUASIQUOTE","","",null,null],[17,"QUASIQUOTE_1","","",null,null],[17,"COMMA","","",null,null],[17,"COMMA_1","","",null,null],[17,"COMMA_AT","","",null,null],[17,"COMMA_AT_1","","",null,null],[17,"BUILD_CLOSURE","","",null,null],[17,"JUMP","","",null,null],[17,"JUMP_IF","","",null,null],[17,"JUMP_IF_BOUND","","",null,null],[17,"JUMP_IF_NOT","","",null,null],[17,"JUMP_IF_NULL","","",null,null],[17,"JUMP_IF_NOT_NULL","","",null,null],[17,"JUMP_IF_EQ","","",null,null],[17,"JUMP_IF_NOT_EQ","","",null,null],[17,"JUMP_IF_EQ_CONST","","",null,null],[17,"JUMP_IF_NOT_EQ_CONST","","",null,null],[17,"NULL","","",null,null],[17,"NOT_NULL","","",null,null],[17,"EQ","","",null,null],[17,"NOT_EQ","","",null,null],[17,"EQ_CONST","","",null,null],[17,"NOT_EQ_CONST","","",null,null],[17,"NOT","","",null,null],[17,"INC","","",null,null],[17,"DEC","","",null,null],[17,"APPEND","","",null,null],[17,"FIRST","","",null,null],[17,"TAIL","","",null,null],[17,"INIT","","",null,null],[17,"LAST","","",null,null],[17,"FIRST_PUSH","","",null,null],[17,"TAIL_PUSH","","",null,null],[17,"INIT_PUSH","","",null,null],[17,"LAST_PUSH","","",null,null],[17,"CALL_SYS","","",null,null],[17,"CALL_SYS_ARGS","","",null,null],[17,"CALL_CONST","","",null,null],[17,"CALL_CONST_0","","",null,null],[17,"CALL_CONST_1","","",null,null],[17,"CALL_CONST_2","","",null,null],[17,"CALL_CONST_3","","",null,null],[17,"CALL_CONST_4","","",null,null],[17,"CALL_CONST_5","","",null,null],[17,"CALL_CONST_6","","",null,null],[17,"CALL_CONST_7","","",null,null],[17,"CALL","","",null,null],[17,"APPLY","","",null,null],[17,"CALL_SELF","","",null,null],[17,"TAIL_CALL","","",null,null],[17,"SKIP","","",null,null],[17,"SKIP_1","","",null,null],[17,"SKIP_2","","",null,null],[17,"SKIP_3","","",null,null],[17,"SKIP_4","","",null,null],[17,"RETURN","","",null,null],[0,"code_flags","ketos::bytecode","Bit flag values for `Code::flags`",null,null],[17,"HAS_NAME","ketos::bytecode::code_flags","Whether the code object has an associated name",null,null],[17,"HAS_KW_PARAMS","","Whether the code accepts one or more keyword parameters",null,null],[17,"HAS_REST_PARAMS","","Whether the code accepts unbounded positional parameters",null,null],[17,"PARAM_FLAGS_MASK","","Mask of mutually exclusive parameter flags",null,null],[17,"ALL_FLAGS","","Mask of all valid flags",null,null],[17,"BYTECODE_VERSION","ketos::bytecode","Bytecode version number, indicating the version of the most recent breaking\nchange to the bytecode format. The version represents a `ketos` version\nnumber, e.g. `0x01_02_03_00` corresponds to version `1.2.3`.\n(The least significant 8 bits don't mean anything yet.)",null,null],[17,"MAX_SHORT_OPERAND","","Maximum value of a short-encoded operand.",null,null],[17,"MAX_LONG_OPERAND","","Maximum value of a long-encoded operand.",null,null],[11,"eq","","",2,null],[11,"ne","","",2,null],[11,"fmt","","",2,null],[11,"clone","","",2,null],[11,"decode","","Decodes a single `Instruction` from a `CodeReader`.",2,{"inputs":[{"name":"codereader"}],"output":{"name":"result"}}],[11,"encode","","Encodes a single `Instruction` into a `CodeBlock`.",2,null],[11,"get_jump_label","","If the instruction is a jump instruction, returns the jump offset.\nOtherwise, returns `None`.",2,null],[11,"max_len","","Returns the maximum length, in bytes, of an encoded instruction.",2,{"inputs":[],"output":{"name":"usize"}}],[11,"eq","","",3,null],[11,"ne","","",3,null],[11,"fmt","","",3,null],[11,"clone","","",3,null],[11,"set_label","","Returns an `Instruction` by inserting the given label value.",3,null],[11,"len","","Length, in bytes, of this jump instruction.",3,null],[11,"fmt","","",0,null],[11,"clone","","",0,null],[11,"arity","","Returns the computed arity of the compiled function.",0,null],[11,"has_rest_params","","Returns whether the function accepts a rest parameter.",0,null],[11,"has_kw_params","","Returns whether the function accepts one or more keyword parameters.",0,null],[11,"new","","Creates a new `CodeReader` wrapping a series of bytes.\nThe first instruction will be read from `offset`.",4,null],[11,"get_offset","","Returns the offset, in bytes, at which the next instruction will be read.",4,null],[11,"read_instruction","","Reads an `Instruction` value from the byte stream.",4,null],[11,"fmt","","",1,null],[11,"new","","Creates an empty `CodeBlock` with a small reserved buffer.",1,{"inputs":[],"output":{"name":"codeblock"}}],[11,"empty","","Creates an empty `CodeBlock` without reserving data.",1,{"inputs":[],"output":{"name":"codeblock"}}],[11,"calculate_size","","Returns the final size of the block, including all encoded instructions\nand final jump instruction.\n`short` indicates whether jump instruction offsets are encoded in\nshort format.",1,null],[11,"len","","Returns the size of all encoded instructions.",1,null],[11,"is_empty","","Returns whether any intruction was encoded.",1,null],[11,"get_bytes","","Returns encoded bytecode data.",1,null],[11,"is_mostly_empty","","Returns whether the code block is mostly empty, permitting the compiler\nto prune it in some cases.",1,null],[11,"set_next","","Sets the block which will immediately follow this block.",1,null],[11,"jump_to","","Sets the jump instruction at the end of the block.",1,null],[11,"write_jump","","Write stored jump instruction to buffer, if present.",1,null],[11,"flush","","Forcibly encodes a pending instruction.\nDoes not encode a jump instruction.",1,null],[11,"push_instruction","","Adds an instruction the block. The instruction may be stored until later\nto be merged into a combination instruction.",1,null],[0,"compile","ketos","Compiles expressions into bytecode objects.",null,null],[4,"CompileError","ketos::compile","Represents an error generated while compiling to bytecode.",null,null],[13,"ArityError","","Error in arity for call to system function",5,null],[12,"name","ketos::compile::CompileError","Name of function",5,null],[12,"expected","","Expected count or range of arguments",5,null],[12,"found","","Number of arguments present",5,null],[13,"CannotDefine","ketos::compile","Attempt to define name of standard value or operator",5,null],[13,"ConstantExists","","Attempt to define name held by `const` value",5,null],[13,"DuplicateExports","","Duplicate `exports` declaration",5,null],[13,"DuplicateParameter","","Duplicate name in parameter list",5,null],[13,"ExportError","","Attempt to export nonexistent name from module",5,null],[12,"module","ketos::compile::CompileError","Module name",5,null],[12,"name","","Imported name",5,null],[13,"ImportCycle","ketos::compile","Recursion in module imports",5,null],[13,"ImportError","","Attempt to import nonexistent name from module",5,null],[12,"module","ketos::compile::CompileError","Module name",5,null],[12,"name","","Imported name",5,null],[13,"ImportShadow","ketos::compile","Attempt to import name which already exists",5,null],[12,"module","ketos::compile::CompileError","Module name",5,null],[12,"name","","Imported name",5,null],[13,"InvalidCallExpression","ketos::compile","Invalid expression to function call",5,null],[13,"InvalidCommaAt","","`,@expr` form outside of a list",5,null],[13,"InvalidModuleName","","Module name contains invalid characters",5,null],[13,"MacroRecursionExceeded","","Recursion limit exceeded while expanding macros",5,null],[13,"MissingExport","","Missing `export` declaration in loaded module",5,null],[13,"ModuleError","","Failed to load a module",5,null],[13,"NotConstant","","`const` operator value is not constant",5,null],[13,"OperandOverflow","","Operand value overflow",5,null],[13,"PrivacyError","","Attempt to import value that is not exported",5,null],[12,"module","ketos::compile::CompileError","Module name",5,null],[12,"name","","Imported name",5,null],[13,"SyntaxError","ketos::compile","Error in parsing operator syntax",5,null],[13,"UnbalancedComma","","More commas than backquotes",5,null],[5,"compile","","Compiles an expression into a code object.",null,{"inputs":[{"name":"scope"},{"name":"value"}],"output":{"name":"result"}}],[11,"fmt","","",5,null],[11,"fmt","","",5,null],[11,"fmt","","",5,null],[0,"encode","ketos","Implements encoding and decoding of compiled bytecode file format.",null,null],[3,"ModuleCode","ketos::encode","Contains code from a compiled module",null,null],[12,"code","","Decoded `Code` objects",6,null],[12,"exports","","Exported names",6,null],[12,"imports","","Imported names",6,null],[12,"macros","","Decoded macro objects",6,null],[4,"DecodeError","","Error in decoding bytecode file format",null,null],[13,"DivisionByZero","","Ratio with zero divisor encountered",7,null],[13,"EmptyList","","Empty list encountered",7,null],[13,"IncorrectMagicNumber","","Incorrect magic number in file header",7,null],[13,"IncorrectVersion","","Incorrect version number in file header",7,null],[13,"InvalidChar","","Invalid unicode character value",7,null],[13,"InvalidCodeFlags","","Invalid flags in code object",7,null],[13,"InvalidName","","Invalid name value",7,null],[13,"InvalidParamCount","","Invalid parameter count in code object",7,null],[13,"InvalidType","","Invalid type value",7,null],[13,"InvalidUtf8","","Invalid UTF-8 in string value",7,null],[13,"UnbalancedComma","","Unbalanced `Quasiquote` and `Comma` values",7,null],[13,"UnexpectedEof","","Unexpected end-of-file",7,null],[4,"EncodeError","","Error in encoding bytecode file format",null,null],[13,"Overflow","","Integer overflow in encoding value",8,null],[13,"UnencodableType","","Attempt to encode a type that cannot be encoded",8,null],[5,"read_bytecode_file","","Read compiled bytecode from a file",null,{"inputs":[{"name":"path"},{"name":"scope"}],"output":{"name":"result"}}],[5,"read_bytecode","","Read compiled bytecode",null,{"inputs":[{"name":"r"},{"name":"path"},{"name":"scope"}],"output":{"name":"result"}}],[5,"write_bytecode_file","","Write compiled bytecode to a file",null,{"inputs":[{"name":"path"},{"name":"modulecode"},{"name":"namestore"}],"output":{"name":"result"}}],[5,"write_bytecode","","Write compiled bytecode",null,{"inputs":[{"name":"w"},{"name":"path"},{"name":"modulecode"},{"name":"namestore"}],"output":{"name":"result"}}],[17,"MAGIC_NUMBER","","First four bytes written to a compiled bytecode file.",null,null],[11,"fmt","","",7,null],[11,"fmt","","",7,null],[11,"fmt","","",8,null],[11,"fmt","","",8,null],[0,"error","ketos","Contains consolidated `Error` type.",null,null],[4,"Error","ketos::error","Consolidated error type; contains one of a category of errors.",null,null],[13,"CompileError","","Error in compiling code to bytecode",9,null],[13,"DecodeError","","Error in decoding bytecode file format",9,null],[13,"EncodeError","","Error in encoding bytecode file format",9,null],[13,"ExecError","","Error in executing code",9,null],[13,"IoError","","Error in file I/O operation",9,null],[13,"ParseError","","Error in scanning text or parsing syntax",9,null],[11,"fmt","","",9,null],[11,"fmt","","",9,null],[11,"from","","",9,{"inputs":[{"name":"compileerror"}],"output":{"name":"error"}}],[11,"from","","",9,{"inputs":[{"name":"decodeerror"}],"output":{"name":"error"}}],[11,"from","","",9,{"inputs":[{"name":"encodeerror"}],"output":{"name":"error"}}],[11,"from","","",9,{"inputs":[{"name":"execerror"}],"output":{"name":"error"}}],[11,"from","","",9,{"inputs":[{"name":"ioerror"}],"output":{"name":"error"}}],[11,"from","","",9,{"inputs":[{"name":"parseerror"}],"output":{"name":"error"}}],[0,"exec","ketos","Implements a virtual machine which interprets bytecode functions.",null,null],[4,"ExecError","ketos::exec","Represents an error generated while executing bytecode.",null,null],[13,"ArityError","","Error in arity to function call",10,null],[12,"name","ketos::exec::ExecError","Name of function, if available",10,null],[12,"expected","","Expected count or range of arguments",10,null],[12,"found","","Number of arguments present",10,null],[13,"CompareNaN","ketos::exec","Attempt to compare with a `NaN` `Float` value.",10,null],[13,"CannotCompare","","Type does not support ordered comparison",10,null],[13,"CannotDefine","","Attempt to redefine a name in master scope",10,null],[13,"DivideByZero","","Attempt to divide by a number equal to zero.",10,null],[13,"DuplicateField","","Duplicate field name in struct definition",10,null],[13,"DuplicateKeyword","","Duplicate keyword argument to function",10,null],[13,"DuplicateStructDef","","Duplicate struct definition",10,null],[13,"FieldError","","No such field name in struct",10,null],[12,"struct_name","ketos::exec::ExecError","Name of struct type",10,null],[12,"field","","Field name",10,null],[13,"FieldTypeError","ketos::exec","Type error assigning value to field",10,null],[12,"struct_name","ketos::exec::ExecError","Name of struct type",10,null],[12,"field","","Name of field",10,null],[12,"expected","","Expected type name",10,null],[12,"found","","Name of type received",10,null],[12,"value","","Value received",10,null],[13,"FormatError","ketos::exec","Error in `format` call",10,null],[12,"fmt","ketos::exec::ExecError","Supplied format string",10,null],[12,"span","","Span within format string",10,null],[12,"err","","Formatting error produced",10,null],[13,"InvalidClosureValue","ketos::exec","Invalid index into closure values",10,null],[13,"InvalidConst","","Invalid const index",10,null],[13,"InvalidDepth","","Invalid (zero) depth value to `Quote`, `Quasiquote`, or `Comma` instruction",10,null],[13,"InvalidJump","","Invalid jump label",10,null],[13,"InvalidSlice","","Slice indices out of order",10,null],[13,"InvalidStack","","Invalid stack index",10,null],[13,"InvalidSystemFn","","Invalid system function",10,null],[13,"MissingArgCount","","`CallSys` instruction for system function which requires argument count",10,null],[13,"MissingField","","Attempt to construct a `Struct` without the given field",10,null],[12,"struct_name","ketos::exec::ExecError","Struct type name",10,null],[12,"field","","Field name",10,null],[13,"NameError","ketos::exec","Attempt to lookup a name that did not exist in scope.",10,null],[13,"NotCharBoundary","","Attempt to slice a string not along UTF-8 code point boundaries.",10,null],[13,"OddKeywordParams","","Odd number of parameters when keyword-value pairs expected",10,null],[13,"OutOfBounds","","Attempt to access an element in a list that is out of bounds.",10,null],[13,"Overflow","","Integer overflow during certain arithmetic operations.",10,null],[13,"Panic","","Code called `panic`",10,null],[13,"StackOverflow","","Exceeded maximum stack size",10,null],[13,"StructDefError","","Struct definition not found",10,null],[13,"TypeError","","Operation performed on unexpected type",10,null],[12,"expected","ketos::exec::ExecError","Name of the type expected",10,null],[12,"found","","Name of the type received",10,null],[12,"value","","Value received",10,null],[13,"StructMismatch","ketos::exec","Function received a value of incorrect type",10,null],[12,"lhs","ketos::exec::ExecError","Type of left-hand side value",10,null],[12,"rhs","","Type of right-hand side value",10,null],[13,"TypeMismatch","ketos::exec","Attempt to operate on two values of incompatible types",10,null],[12,"lhs","ketos::exec::ExecError","Type of left-hand side value",10,null],[12,"rhs","","Type of right-hand side value",10,null],[13,"UnexpectedEnd","ketos::exec","Unexpected end in bytecode",10,null],[13,"UnrecognizedKeyword","","Unrecognized keyword passed to function",10,null],[13,"UnrecognizedOpCode","","Unrecognized opcode",10,null],[5,"panic","","Returns a `Panic` error with the given value.",null,{"inputs":[{"name":"t"}],"output":{"name":"e"}}],[5,"panic_none","","Returns a `Panic` error with no value.",null,{"inputs":[],"output":{"name":"e"}}],[5,"execute","","Executes a code object and returns the value.",null,{"inputs":[{"name":"scope"},{"name":"rc"}],"output":{"name":"result"}}],[5,"call_function","","Calls a function or lambda in the given scope with the given arguments.",null,{"inputs":[{"name":"scope"},{"name":"value"},{"name":"vec"}],"output":{"name":"result"}}],[5,"execute_function","","Executes a `Function` in the given scope and returns the value.",null,{"inputs":[{"name":"scope"},{"name":"function"},{"name":"vec"}],"output":{"name":"result"}}],[5,"execute_lambda","","Executes a `Lambda` in the given scope and returns the value.",null,{"inputs":[{"name":"lambda"},{"name":"vec"}],"output":{"name":"result"}}],[11,"fmt","","",10,null],[11,"expected","","Convenience function to return a `TypeError` value when `expected`\ntype is expected, but some other type of value is found.",10,{"inputs":[{"name":"str"},{"name":"value"}],"output":{"name":"execerror"}}],[11,"expected_field","","Convenience function to return a `FieldTypeError` value when a struct\nfield of the incorrect type is received.",10,{"inputs":[{"name":"name"},{"name":"name"},{"name":"name"},{"name":"value"}],"output":{"name":"execerror"}}],[11,"fmt","","",10,null],[11,"fmt","","",10,null],[0,"function","ketos","Contains implementations of core system functions.",null,null],[3,"SystemFn","ketos::function","Represents a system function",null,null],[12,"arity","","Function arity",11,null],[12,"callback","","Function implementation",11,null],[3,"Function","","Represents a function implemented in Rust.",null,null],[12,"name","","Function name",12,null],[12,"sys_fn","","System function",12,null],[3,"Lambda","","Represents a function that evaluates an expression.",null,null],[12,"code","","Bytecode implementation",13,null],[12,"scope","","Scope in which the lambda was created.\nA weak reference is used to prevent cycles.",13,null],[12,"values","","Enclosed values",13,null],[4,"Arity","","Describes the number of arguments a function may accept.",null,null],[13,"Exact","","Function accepts exactly *n* arguments",14,null],[13,"Min","","Function accepts at least *n* arguments",14,null],[13,"Range","","Function accepts an inclusive range of arguments",14,null],[5,"plural","","Returns the suitable plural suffix `""` or `"s"` for count `n`.",null,{"inputs":[{"name":"u32"}],"output":{"name":"str"}}],[5,"add_number","","Returns the result of adding two values together.",null,{"inputs":[{"name":"value"},{"name":"value"}],"output":{"name":"result"}}],[5,"neg_number","","Returns the result of negating a value.",null,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[5,"sub_number","","Returns the resulting of subtracting a value from another.",null,{"inputs":[{"name":"value"},{"name":"value"}],"output":{"name":"result"}}],[5,"mul_number","","Returns the result of multiplying two values together.",null,{"inputs":[{"name":"value"},{"name":"value"}],"output":{"name":"result"}}],[5,"div_number","","Returns the result of dividing two values.",null,{"inputs":[{"name":"value"},{"name":"value"}],"output":{"name":"result"}}],[5,"floor_div_number_step","","Returns the result of floor-dividing two values,\nwithout calling `floor` on the result.",null,{"inputs":[{"name":"value"},{"name":"value"}],"output":{"name":"result"}}],[5,"floor_number","","Returns a value rounded toward negative infinity.",null,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[6,"FunctionImpl","","`SystemFn` implemented by Rust function",null,null],[7,"SYSTEM_FNS","","System function implementations.",null,null],[11,"clone","","",11,null],[11,"eq","","",11,null],[11,"eq","","",14,null],[11,"ne","","",14,null],[11,"fmt","","",14,null],[11,"clone","","",14,null],[11,"accepts","","Returns whether this arity may accept `n` arguments.",14,null],[11,"fmt","","",14,null],[11,"clone","","",12,null],[11,"fmt","","",12,null],[11,"eq","","",12,null],[11,"clone","","",13,null],[11,"new","","Creates a new `Lambda`.",13,{"inputs":[{"name":"rc"},{"name":"scope"}],"output":{"name":"lambda"}}],[11,"new_closure","","Creates a new `Lambda` enclosing a set of values.",13,{"inputs":[{"name":"rc"},{"name":"weakscope"},{"name":"box"}],"output":{"name":"lambda"}}],[11,"fmt","","",13,null],[11,"eq","","",13,null],[0,"integer","ketos","Arbitrary precision integer and ratio types.",null,null],[4,"Sign","ketos::integer","A Sign is a `BigInt`'s composing element.",null,null],[13,"Minus","","",15,null],[13,"NoSign","","",15,null],[13,"Plus","","",15,null],[3,"Integer","","Arbitrary precision signed integer",null,null],[3,"Ratio","","Arbitrary precision signed integer ratio",null,null],[3,"FromStrIntError","","Error produced when failing to parse an `Integer` from `&str`.",null,null],[3,"FromStrRatioError","","Error produced when failing to parse a `Ratio` from `&str`.",null,null],[3,"FromStrRadixError","","Error produced when failing to parse an `Integer` with radix from `&str`.",null,null],[11,"partial_cmp","","",16,null],[11,"lt","","",16,null],[11,"le","","",16,null],[11,"gt","","",16,null],[11,"ge","","",16,null],[11,"cmp","","",16,null],[11,"eq","","",16,null],[11,"ne","","",16,null],[11,"default","","",16,{"inputs":[],"output":{"name":"integer"}}],[11,"fmt","","",16,null],[11,"clone","","",16,null],[11,"partial_cmp","","",17,null],[11,"lt","","",17,null],[11,"le","","",17,null],[11,"gt","","",17,null],[11,"ge","","",17,null],[11,"cmp","","",17,null],[11,"eq","","",17,null],[11,"ne","","",17,null],[11,"fmt","","",17,null],[11,"clone","","",17,null],[11,"eq","","",18,null],[11,"ne","","",18,null],[11,"fmt","","",18,null],[11,"eq","","",19,null],[11,"ne","","",19,null],[11,"fmt","","",19,null],[11,"eq","","",20,null],[11,"ne","","",20,null],[11,"fmt","","",20,null],[11,"fmt","","",18,null],[11,"fmt","","",19,null],[11,"fmt","","",20,null],[11,"from_bytes_be","","Creates an `Integer` from a sign and a series of big-endian bytes.",16,null],[11,"from_bytes_le","","Creates an `Integer` from a sign and a series of little-endian bytes.",16,null],[11,"from_f64","","Creates an `Integer` with the value of the given `f64`.\nReturns `None` if the value cannot be converted.",16,{"inputs":[{"name":"f64"}],"output":{"name":"option"}}],[11,"from_i8","","Creates an `Integer` with the value of the given `i8`.",16,{"inputs":[{"name":"i8"}],"output":{"name":"integer"}}],[11,"from_i16","","Creates an `Integer` with the value of the given `i16`.",16,{"inputs":[{"name":"i16"}],"output":{"name":"integer"}}],[11,"from_i32","","Creates an `Integer` with the value of the given `i32`.",16,{"inputs":[{"name":"i32"}],"output":{"name":"integer"}}],[11,"from_i64","","Creates an `Integer` with the value of the given `i64`.",16,{"inputs":[{"name":"i64"}],"output":{"name":"integer"}}],[11,"from_isize","","Creates an `Integer` with the value of the given `isize`.",16,{"inputs":[{"name":"isize"}],"output":{"name":"integer"}}],[11,"from_u8","","Creates an `Integer` with the value of the given `u8`.",16,{"inputs":[{"name":"u8"}],"output":{"name":"integer"}}],[11,"from_u16","","Creates an `Integer` with the value of the given `u16`.",16,{"inputs":[{"name":"u16"}],"output":{"name":"integer"}}],[11,"from_u32","","Creates an `Integer` with the value of the given `u32`.",16,{"inputs":[{"name":"u32"}],"output":{"name":"integer"}}],[11,"from_u64","","Creates an `Integer` with the value of the given `u64`.",16,{"inputs":[{"name":"u64"}],"output":{"name":"integer"}}],[11,"from_usize","","Creates an `Integer` with the value of the given `usize`.",16,{"inputs":[{"name":"usize"}],"output":{"name":"integer"}}],[11,"from_str_radix","","Returns an `Integer` represented by a string in the given radix.\n`radix` must be in the range `[2, 36]`.",16,{"inputs":[{"name":"str"},{"name":"u32"}],"output":{"name":"result"}}],[11,"to_bytes_be","","Returns integer sign and a series of big-endian bytes.",16,null],[11,"to_bytes_le","","Returns integer sign and a series of little-endian bytes.",16,null],[11,"to_str_radix","","Returns a string representation of the `Integer` in the given radix.\n`radix` must be in the range `[2, 36]`.",16,null],[11,"to_i8","","Returns the `Integer` as an `i8` value.",16,null],[11,"to_i16","","Returns the `Integer` as an `i16` value.",16,null],[11,"to_i32","","Returns the `Integer` as an `i32` value.",16,null],[11,"to_i64","","Returns the `Integer` as an `i64` value.",16,null],[11,"to_isize","","Returns the `Integer` as an `isize` value.",16,null],[11,"to_u8","","Returns the `Integer` as an `u8` value.",16,null],[11,"to_u16","","Returns the `Integer` as an `u16` value.",16,null],[11,"to_u32","","Returns the `Integer` as an `u32` value.",16,null],[11,"to_u64","","Returns the `Integer` as an `u64` value.",16,null],[11,"to_usize","","Returns the `Integer` as an `usize` value.",16,null],[11,"to_f32","","Returns the `Integer` as an `f32` value.",16,null],[11,"to_f64","","Returns the `Integer` as an `f64` value.",16,null],[11,"pow","","Raises the value to the power of `exp`.",16,null],[11,"abs","","Returns the absolute value of an `Integer`.",16,null],[11,"is_multiple_of","","Returns whether `self` is a multiple of `rhs`.",16,null],[11,"is_negative","","Returns whether the `Integer` is less than zero.",16,null],[11,"is_positive","","Returns whether the `Integer` is greater than zero.",16,null],[11,"is_zero","","Returns whether the `Integer` is equal to zero.",16,null],[11,"zero","","Returns an `Integer` of the value zero.",16,{"inputs":[],"output":{"name":"integer"}}],[11,"is_one","","Returns whether the `Integer` is equal to one.",16,null],[11,"one","","Returns an `Integer` of the value one.",16,{"inputs":[],"output":{"name":"integer"}}],[11,"new","","Constructs a `Ratio` from numerator and denominator.",17,{"inputs":[{"name":"integer"},{"name":"integer"}],"output":{"name":"ratio"}}],[11,"from_f32","","Creates a `Ratio` with the value of the given `f32`.\nReturns `None` if the value cannot be converted.",17,{"inputs":[{"name":"f32"}],"output":{"name":"option"}}],[11,"from_f64","","Creates a `Ratio` with the value of the given `f64`.\nReturns `None` if the value cannot be converted.",17,{"inputs":[{"name":"f64"}],"output":{"name":"option"}}],[11,"from_integer","","Creates a `Ratio` from an `Integer` value.",17,{"inputs":[{"name":"integer"}],"output":{"name":"ratio"}}],[11,"to_f32","","Returns the `Ratio` as an `f32` value.",17,null],[11,"to_f64","","Returns the `Ratio` as an `f64` value.",17,null],[11,"to_integer","","Truncates a `Ratio` and returns the whole portion as an `Integer`.",17,null],[11,"is_integer","","Returns whether the `Ratio` is an integer; i.e. its denominator is `1`.",17,null],[11,"abs","","Returns the absolute value of the `Ratio`.",17,null],[11,"ceil","","Returns the `Ratio` rounded towards positive infinity.",17,null],[11,"floor","","Returns the `Ratio` rounded towards negative infinity.",17,null],[11,"fract","","Returns the fractional portion of a `Ratio`.",17,null],[11,"round","","Returns the `Ratio` rounded to the nearest integer.\nRounds half-way cases away from zero.",17,null],[11,"trunc","","Returns the `Ratio` rounded towards zero.",17,null],[11,"recip","","Returns the reciprocal of a `Ratio`.",17,null],[11,"numer","","Returns the `Ratio`'s numerator.",17,null],[11,"denom","","Returns the `Ratio`'s denominator.",17,null],[11,"is_zero","","Returns whether the `Ratio` is equal to zero.",17,null],[11,"is_negative","","Returns whether the `Ratio` is less than zero.",17,null],[11,"is_positive","","Returns whether the `Ratio` is greater than zero.",17,null],[11,"zero","","Returns a `Ratio` of value zero.",17,{"inputs":[],"output":{"name":"ratio"}}],[11,"one","","Returns a `Ratio` of value one.",17,{"inputs":[],"output":{"name":"ratio"}}],[11,"eq","","",17,null],[11,"ne","","",17,null],[11,"eq","","",16,null],[11,"ne","","",16,null],[11,"fmt","","",16,null],[11,"from_str","","",16,{"inputs":[{"name":"str"}],"output":{"name":"result"}}],[11,"shl","","",16,null],[11,"shr","","",16,null],[11,"add","","",16,null],[11,"add","","",16,null],[11,"sub","","",16,null],[11,"sub","","",16,null],[11,"mul","","",16,null],[11,"mul","","",16,null],[11,"div","","",16,null],[11,"div","","",16,null],[11,"rem","","",16,null],[11,"rem","","",16,null],[11,"neg","","",16,null],[11,"is_zero","","",16,null],[11,"zero","","",16,{"inputs":[],"output":{"name":"integer"}}],[11,"add","","",17,null],[11,"add","","",17,null],[11,"sub","","",17,null],[11,"sub","","",17,null],[11,"mul","","",17,null],[11,"mul","","",17,null],[11,"div","","",17,null],[11,"div","","",17,null],[11,"rem","","",17,null],[11,"rem","","",17,null],[11,"neg","","",17,null],[11,"is_zero","","",17,null],[11,"zero","","",17,{"inputs":[],"output":{"name":"ratio"}}],[11,"fmt","","",17,null],[11,"from_str","","",17,{"inputs":[{"name":"str"}],"output":{"name":"result"}}],[0,"interpreter","ketos","Provides a context in which to compile and execute code.",null,null],[3,"Interpreter","ketos::interpreter","Provides a context in which to compile and execute code.",null,null],[11,"clone","","",21,null],[11,"new","","Creates a new `Interpreter`.",21,{"inputs":[],"output":{"name":"interpreter"}}],[11,"with_loader","","Creates a new `Interpreter` using the given `ModuleLoader` instance.",21,{"inputs":[{"name":"box"}],"output":{"name":"interpreter"}}],[11,"with_scope","","Creates a new `Interpreter` using the given `Scope` instance.",21,{"inputs":[{"name":"scope"}],"output":{"name":"interpreter"}}],[11,"with_search_paths","","Creates a new `Interpreter` that searches for module files in a given\nseries of directories.",21,{"inputs":[{"name":"vec"}],"output":{"name":"interpreter"}}],[11,"clear_codemap","","Clears cached source from the contained `CodeMap`.",21,null],[11,"display_error","","Prints an error to `stderr`.\n`input` is the source code which produced the error and `name`\nis the optional filename of the program. These are used if the error\nmessage refers to a span within the source code.",21,null],[11,"display_trace","","Prints traceback information to `stderr`.",21,null],[11,"display_value","","Prints a string representation of a value to `stdout`.",21,null],[11,"format_value","","Formats a value into a string.",21,null],[11,"execute","","Executes a bare `Code` object taking no parameters.",21,null],[11,"execute_code","","Executes a `Rc<Code>` object taking no parameters.",21,null],[11,"execute_program","","Executes a series of code objects sequentially and returns the value\nof the final expression. If `code` is empty, the value `()` is returned.",21,null],[11,"call","","Calls a named function with the given arguments.",21,null],[11,"call_value","","Calls a function with the given arguments.",21,null],[11,"get_value","","Returns a value, if present, in the interpreter scope.",21,null],[11,"get_scope","","Calls a closure with a borrowed reference to the global scope.",21,null],[11,"set_args","","Sets the value of `argv` within the execution scope.",21,null],[11,"run_file","","Compiles and executes the contents of a file.",21,null],[11,"run_single_expr","","Compiles and executes an input expression.",21,null],[11,"run_code","","Parses and executes a series of expressions and return the last value.",21,null],[11,"compile_single_expr","","Compiles and compiles a single expression and returns a code object.\nIf the input string contains more than one expression, an error is returned.",21,null],[11,"compile_exprs","","Compiles and compiles a series of expressions.",21,null],[11,"parse_single_expr","","Parses a single expression and returns it as a `Value`.\nIf `input` contains more than one expression, an error is returned.",21,null],[11,"parse_exprs","","Parses a series of expressions and returns them as `Value`s.",21,null],[11,"parse_file","","Parses a series of expressions from the contents of a file and\nreturns them as `Value`s.",21,null],[0,"io","ketos","Creates an abstraction layer to I/O operations",null,null],[3,"GlobalIo","ketos::io","Contains global shared I/O objects",null,null],[12,"stdout","","Shared standard output writer",22,null],[3,"IoError","","Describes the cause of an `io::Error`.",null,null],[12,"err","","Error value",23,null],[12,"path","","Path to file whose operation produced the error",23,null],[12,"mode","","I/O mode that produced the error",23,null],[3,"Sink","","A shared writer which sends all data into the void.",null,null],[3,"File","","Wraps a `fs::File` as a shared writer, providing a path for error values.",null,null],[4,"IoMode","","Indicates the type of I/O operation that generated an error.",null,null],[13,"Create","","Creating a new file",24,null],[13,"Open","","Opening an existing file",24,null],[13,"Read","","Reading data from an open file",24,null],[13,"Stat","","Accessing file metadata",24,null],[13,"Write","","Writing data to an open file",24,null],[8,"SharedWrite","","A writer object that can operate using shared references.",null,null],[10,"write_all","","Analogous to `std::io::Write::write_all`; writes all bytes\nor returns an error.",25,null],[10,"write_fmt","","Analogous to `std::io::Write::write_all`; writes formatted arguments\nor returns an error.",25,null],[10,"flush","","Analogous to `std::io::Write::flush`; flushes the output stream.",25,null],[11,"new","","Creates a `GlobalIo` instance using the given `stdout` writer.",22,{"inputs":[{"name":"rc"}],"output":{"name":"globalio"}}],[11,"null","","Creates a `GlobalIo` instance whose `stdout` ignores all output.",22,{"inputs":[],"output":{"name":"globalio"}}],[11,"default","","Creates a `GlobalIo` instance using standard output writer.",22,{"inputs":[],"output":{"name":"globalio"}}],[11,"fmt","","",23,null],[11,"new","","Creates a new `IoError`.",23,{"inputs":[{"name":"iomode"},{"name":"path"},{"name":"error"}],"output":{"name":"ioerror"}}],[11,"fmt","","",23,null],[11,"eq","","",24,null],[11,"fmt","","",24,null],[11,"clone","","",24,null],[11,"fmt","","",24,null],[11,"write_all","","",26,null],[11,"write_fmt","","",26,null],[11,"flush","","",26,null],[11,"new","","Creates a new `File` from an open filehandle and path.",27,{"inputs":[{"name":"file"},{"name":"pathbuf"}],"output":{"name":"file"}}],[11,"write_all","","",27,null],[11,"write_fmt","","",27,null],[11,"flush","","",27,null],[0,"lexer","ketos","Produces tokens from an input stream.",null,null],[3,"SpanDisplay","ketos::lexer","Produced by `highlight_span` to help in printing a line of code with\na span highlighted.",null,null],[12,"filename","","Filename",28,null],[12,"line","","Line number",28,null],[12,"col","","Column offset",28,null],[12,"source","","Line of source code",28,null],[12,"highlight","","Highlighting string",28,null],[3,"CodeMap","","Contains source code of parsed programs",null,null],[3,"Lexer","","Produces `Token`s from an input string.",null,null],[3,"Span","","Represents a beginning and end point within a body of text.",null,null],[12,"lo","","First byte of range",29,null],[12,"hi","","One byte past the end of range",29,null],[4,"Token","","Represents a single unit of code input.",null,null],[13,"LeftParen","","Left parenthesis `(`",30,null],[13,"RightParen","","Right parenthesis `)`",30,null],[13,"DocComment","","A series of line comments beginning with `;;`,\nused to document declared values.",30,null],[13,"Float","","Floating point literal",30,null],[13,"Integer","","Integer literal in a given radix",30,null],[13,"Ratio","","Ratio literal",30,null],[13,"Char","","Character literal",30,null],[13,"String","","String literal",30,null],[13,"Name","","Identifier name",30,null],[13,"Keyword","","Identifier keyword",30,null],[13,"BackQuote","","Backtick quote `` ` ``",30,null],[13,"Comma","","Comma `,`",30,null],[13,"CommaAt","","Comma followed by at `,@`",30,null],[13,"Quote","","Single-quote `'`",30,null],[13,"End","","End of input stream",30,null],[5,"highlight_span","","Returns a structure which helps in highlighting a span within a body of text.",null,{"inputs":[{"name":"str"},{"name":"span"}],"output":{"name":"spandisplay"}}],[6,"BytePos","","Represents a byte position within an input stream.",null,null],[11,"eq","","",30,null],[11,"ne","","",30,null],[11,"fmt","","",30,null],[11,"clone","","",30,null],[11,"name","","Returns a human-readable name of a token.",30,null],[11,"fmt","","",28,null],[11,"clone","","",28,null],[11,"fmt","","",31,null],[11,"clone","","",31,null],[11,"new","","Creates a new `CodeMap`.",31,{"inputs":[],"output":{"name":"codemap"}}],[11,"add_source","","Adds a source to the codemap, returning its offset in the internal buffer.",31,null],[11,"clear","","Clears all source from the codemap.",31,null],[11,"highlight_span","","Highlights a span within the codemap.",31,null],[11,"eq","","",29,null],[11,"ne","","",29,null],[11,"fmt","","",29,null],[11,"clone","","",29,null],[11,"empty","","Returns an empty `Span` at the given offset.",29,{"inputs":[{"name":"bytepos"}],"output":{"name":"span"}}],[11,"one","","Returns a `Span` spanning a single char.",29,{"inputs":[{"name":"bytepos"},{"name":"char"}],"output":{"name":"span"}}],[11,"byte","","Returns a `Span` spanning a single byte.",29,{"inputs":[{"name":"bytepos"}],"output":{"name":"span"}}],[11,"new","","Creates a new `Lexer` to read tokens from the input string.",32,{"inputs":[{"name":"str"},{"name":"bytepos"}],"output":{"name":"lexer"}}],[11,"next_token","","Scans the input stream for the next token, returning the token and\nthe span of input text from which it was scanned.",32,null],[11,"skip_shebang","","Skips over a shebang line at the start of input. This is used when\nparsing files which, on Unix systems, may use a line consisting of `#!`\nfollowed by a path to the interpreter.",32,null],[0,"module","ketos","Implements loading named values from code modules.",null,null],[3,"Module","ketos::module","Contains the values in a loaded module's namespace.",null,null],[12,"name","","Module name",33,null],[12,"scope","","Module scope",33,null],[3,"ModuleBuilder","","Helper to build modules in Rust code.",null,null],[3,"ModuleRegistry","","Loads modules into the running program and caches previously loaded modules",null,null],[3,"NullModuleLoader","","Loads no modules.",null,null],[3,"ChainModuleLoader","","A chained module loader contains two `ModuleLoader` implementations.",null,null],[3,"BuiltinModuleLoader","","Loads builtin modules.",null,null],[3,"FileModuleLoader","","Loads modules from source files and compiled bytecode files.",null,null],[17,"FILE_EXTENSION","","File extension for `ketos` source files.",null,null],[17,"COMPILED_FILE_EXTENSION","","File extension for `ketos` compiled bytecode files.",null,null],[8,"ModuleLoader","","Provides a method for loading modules into a running interpreter.",null,null],[10,"load_module","","Loads the named module, supplying a `Scope` to use as its namespace.",34,null],[11,"chain","","Creates a `ChainModuleLoader` using this loader and another.",34,null],[11,"clone","","",33,null],[11,"new","","Creates a new module using the given scope.",33,{"inputs":[{"name":"str"},{"name":"scope"}],"output":{"name":"module"}}],[11,"new","","Creates a new `ModuleBuilder` for the given scope.",35,{"inputs":[{"name":"str"},{"name":"scope"}],"output":{"name":"modulebuilder"}}],[11,"add_constant","","Adds a constant value to the module.",35,null],[11,"add_function","","Adds a function to the module.",35,null],[11,"add_value","","Adds a value to the module.",35,null],[11,"add_value_with_name","","Adds a value to the module using the generated name value.",35,null],[11,"finish","","Consumes the builder and returns the new `Module`.",35,null],[11,"new","","Creates a new `ModuleRegistry` using the given `ModuleLoader`\nto load new modules.",36,{"inputs":[{"name":"box"}],"output":{"name":"moduleregistry"}}],[11,"get_module","","Returns a loaded module. If the module has not been loaded in this\nregistry; the contained `ModuleLoader` instance will be used to load it.",36,null],[11,"load_module","","",37,null],[11,"load_module","","",38,null],[11,"load_module","","",39,null],[11,"new","","Creates a new `FileModuleLoader` that will search the current\ndirectory for modules.",40,{"inputs":[],"output":{"name":"filemoduleloader"}}],[11,"with_search_paths","","Creates a new `FileModuleLoader` that will search the given series\nof directories to load modules.",40,{"inputs":[{"name":"vec"}],"output":{"name":"filemoduleloader"}}],[11,"add_search_path","","Adds a directory to search for module files.",40,null],[11,"set_read_bytecode","","Sets whether the `FileModuleLoader` will search for compiled bytecode\nfiles when loading modules. The default is `true`.",40,null],[11,"set_write_bytecode","","Sets whether the `FileModuleLoader` will write compiled bytecode\nfiles after loading a module from source. The default is `true`.",40,null],[11,"load_module","","",40,null],[0,"name","ketos","Implements name interning and containers using names as keys.",null,null],[3,"Name","ketos::name","Represents a name interned within a `NameStore`.",null,null],[3,"NameDebugger","","Displays a `NameDebug` value using standard formatting.",null,null],[3,"NameDisplayer","","Displays a `NameDisplay` value using standard formatting.",null,null],[3,"NameInputConversion","","Converts module-local names loaded from bytecode files into global names\nin a running interpreter.",null,null],[3,"NameOutputConversion","","Converts global names in a running interpreter into module-local names,\nretaining string representations, which can be written to a bytecode file.",null,null],[3,"NameStore","","Maps interned `Name` values to their `String` representations",null,null],[3,"NameMap","","Maps names to values in a sorted `Vec`",null,null],[3,"NameMapSlice","","Maps names to values in a sorted boxed slice.",null,null],[3,"NameSet","","Represents a set of names",null,null],[3,"NameSetSlice","","Represents a set of names.",null,null],[3,"SetIter","","Iterates over names in a `NameSet` or `NameSetSlice`.",null,null],[5,"get_standard_name","","Returns the standard name for the given integer value, if it exists.",null,{"inputs":[{"name":"u32"}],"output":{"name":"option"}}],[5,"is_standard_name","","Returns whether the given name is a standard name.",null,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[5,"is_standard_value","","Returns whether a standard value corresponds to the given name.",null,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[5,"get_system_fn","","Returns the system function for the given name, if one exists.",null,{"inputs":[{"name":"name"}],"output":{"name":"option"}}],[5,"is_system_fn","","Returns whether the given name corresponds to a system function.",null,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[5,"is_system_operator","","Returns whether the given name corresponds to a system operator.",null,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[5,"get_standard_name_for","","Returns the standard name for the given string representation,\nif one exists.",null,{"inputs":[{"name":"str"}],"output":{"name":"option"}}],[5,"standard_name","","Returns the string representation of the given name,\nif it is a standard name.",null,{"inputs":[{"name":"name"}],"output":{"name":"option"}}],[5,"debug_names","","Returns a `NameDebugger` wrapper around a value.",null,{"inputs":[{"name":"namestore"},{"name":"t"}],"output":{"name":"namedebugger"}}],[5,"display_names","","Returns a `NameDisplayer` wrapper around a value.",null,{"inputs":[{"name":"namestore"},{"name":"t"}],"output":{"name":"namedisplayer"}}],[0,"standard_names","","Contains constants standard name values; interned names which are\nuniversal to all programs.",null,null],[0,"consts","ketos::name::standard_names","",null,null],[17,"ADD","ketos::name::standard_names::consts","",null,null],[17,"SUB","","",null,null],[17,"MUL","","",null,null],[17,"POW","","",null,null],[17,"DIV","","",null,null],[17,"FLOOR_DIV","","",null,null],[17,"REM","","",null,null],[17,"SHL","","",null,null],[17,"SHR","","",null,null],[17,"EQ","","",null,null],[17,"NOT_EQ","","",null,null],[17,"LT","","",null,null],[17,"GT","","",null,null],[17,"LE","","",null,null],[17,"GE","","",null,null],[17,"ZERO","","",null,null],[17,"MAX","","",null,null],[17,"MIN","","",null,null],[17,"APPEND","","",null,null],[17,"ELT","","",null,null],[17,"CONCAT","","",null,null],[17,"JOIN","","",null,null],[17,"LEN","","",null,null],[17,"SLICE","","",null,null],[17,"FIRST","","",null,null],[17,"SECOND","","",null,null],[17,"LAST","","",null,null],[17,"INIT","","",null,null],[17,"TAIL","","",null,null],[17,"LIST","","",null,null],[17,"REVERSE","","",null,null],[17,"ABS","","",null,null],[17,"CEIL","","",null,null],[17,"FLOOR","","",null,null],[17,"ROUND","","",null,null],[17,"TRUNC","","",null,null],[17,"INT","","",null,null],[17,"FLOAT","","",null,null],[17,"INF","","",null,null],[17,"NAN","","",null,null],[17,"DENOM","","",null,null],[17,"FRACT","","",null,null],[17,"NUMER","","",null,null],[17,"RAT","","",null,null],[17,"RECIP","","",null,null],[17,"CHARS","","",null,null],[17,"STRING","","",null,null],[17,"ID","","",null,null],[17,"IS","","",null,null],[17,"IS_INSTANCE","","",null,null],[17,"NULL","","",null,null],[17,"TYPE_OF","","",null,null],[17,"DOT","","",null,null],[17,"DOT_EQ","","",null,null],[17,"NEW","","",null,null],[17,"FORMAT","","",null,null],[17,"PRINT","","",null,null],[17,"PRINTLN","","",null,null],[17,"PANIC","","",null,null],[17,"XOR","","",null,null],[17,"NOT","","",null,null],[17,"FALSE","","",null,null],[17,"TRUE","","",null,null],[17,"APPLY","","",null,null],[17,"DO","","",null,null],[17,"LET","","",null,null],[17,"DEFINE","","",null,null],[17,"MACRO","","",null,null],[17,"STRUCT","","",null,null],[17,"IF","","",null,null],[17,"AND","","",null,null],[17,"OR","","",null,null],[17,"CASE","","",null,null],[17,"COND","","",null,null],[17,"LAMBDA","","",null,null],[17,"EXPORT","","",null,null],[17,"USE","","",null,null],[17,"CONST","","",null,null],[17,"ALL","","",null,null],[17,"ELSE","","",null,null],[17,"OPTIONAL","","",null,null],[17,"KEY","","",null,null],[17,"REST","","",null,null],[17,"UNBOUND","","",null,null],[17,"UNIT","","",null,null],[17,"BOOL","","",null,null],[17,"CHAR","","",null,null],[17,"INTEGER","","",null,null],[17,"RATIO","","",null,null],[17,"STRUCT_DEF","","",null,null],[17,"KEYWORD","","",null,null],[17,"OBJECT","","",null,null],[17,"NAME","","",null,null],[17,"NUMBER","","",null,null],[17,"FUNCTION","","",null,null],[17,"ADD","ketos::name::standard_names","",null,null],[17,"SUB","","",null,null],[17,"MUL","","",null,null],[17,"POW","","",null,null],[17,"DIV","","",null,null],[17,"FLOOR_DIV","","",null,null],[17,"REM","","",null,null],[17,"SHL","","",null,null],[17,"SHR","","",null,null],[17,"EQ","","",null,null],[17,"NOT_EQ","","",null,null],[17,"LT","","",null,null],[17,"GT","","",null,null],[17,"LE","","",null,null],[17,"GE","","",null,null],[17,"ZERO","","",null,null],[17,"MAX","","",null,null],[17,"MIN","","",null,null],[17,"APPEND","","",null,null],[17,"ELT","","",null,null],[17,"CONCAT","","",null,null],[17,"JOIN","","",null,null],[17,"LEN","","",null,null],[17,"SLICE","","",null,null],[17,"FIRST","","",null,null],[17,"SECOND","","",null,null],[17,"LAST","","",null,null],[17,"INIT","","",null,null],[17,"TAIL","","",null,null],[17,"LIST","","",null,null],[17,"REVERSE","","",null,null],[17,"ABS","","",null,null],[17,"CEIL","","",null,null],[17,"FLOOR","","",null,null],[17,"ROUND","","",null,null],[17,"TRUNC","","",null,null],[17,"INT","","",null,null],[17,"FLOAT","","",null,null],[17,"INF","","",null,null],[17,"NAN","","",null,null],[17,"DENOM","","",null,null],[17,"FRACT","","",null,null],[17,"NUMER","","",null,null],[17,"RAT","","",null,null],[17,"RECIP","","",null,null],[17,"CHARS","","",null,null],[17,"STRING","","",null,null],[17,"ID","","",null,null],[17,"IS","","",null,null],[17,"IS_INSTANCE","","",null,null],[17,"NULL","","",null,null],[17,"TYPE_OF","","",null,null],[17,"DOT","","",null,null],[17,"DOT_EQ","","",null,null],[17,"NEW","","",null,null],[17,"FORMAT","","",null,null],[17,"PRINT","","",null,null],[17,"PRINTLN","","",null,null],[17,"PANIC","","",null,null],[17,"XOR","","",null,null],[17,"NOT","","",null,null],[17,"FALSE","","",null,null],[17,"TRUE","","",null,null],[17,"APPLY","","",null,null],[17,"DO","","",null,null],[17,"LET","","",null,null],[17,"DEFINE","","",null,null],[17,"MACRO","","",null,null],[17,"STRUCT","","",null,null],[17,"IF","","",null,null],[17,"AND","","",null,null],[17,"OR","","",null,null],[17,"CASE","","",null,null],[17,"COND","","",null,null],[17,"LAMBDA","","",null,null],[17,"EXPORT","","",null,null],[17,"USE","","",null,null],[17,"CONST","","",null,null],[17,"ALL","","",null,null],[17,"ELSE","","",null,null],[17,"OPTIONAL","","",null,null],[17,"KEY","","",null,null],[17,"REST","","",null,null],[17,"UNBOUND","","",null,null],[17,"UNIT","","",null,null],[17,"BOOL","","",null,null],[17,"CHAR","","",null,null],[17,"INTEGER","","",null,null],[17,"RATIO","","",null,null],[17,"STRUCT_DEF","","",null,null],[17,"KEYWORD","","",null,null],[17,"OBJECT","","",null,null],[17,"NAME","","",null,null],[17,"NUMBER","","",null,null],[17,"FUNCTION","","",null,null],[17,"NUM_STANDARD_NAMES","ketos::name","Number of standard names",null,null],[17,"NUM_SYSTEM_FNS","","Number of names, starting at `0`, which refer to system functions.",null,null],[17,"NUM_STANDARD_VALUES","","Number of names, starting at `0`, which refer to standard values.",null,null],[17,"SYSTEM_OPERATORS_BEGIN","","First standard name which refers to a system operator.",null,null],[17,"SYSTEM_OPERATORS_END","","One-past-the-end of standard names which refer to system operators.",null,null],[17,"NUM_SYSTEM_OPERATORS","","Number of system operators, beginning at `SYSTEM_OPERATORS_BEGIN`.",null,null],[8,"NameDebug","","Represents a value which can produce debugging output and may contain\none or more interned `Name` values.",null,null],[10,"fmt","","Writes the value's debug representation to the formatter stream.",41,null],[8,"NameDisplay","","Represents a value which can produce user-facing output and may contain\none or more interned `Name` values.",null,null],[10,"fmt","","Writes the value's display representation to the formatter stream.",42,null],[11,"partial_cmp","","",43,null],[11,"lt","","",43,null],[11,"le","","",43,null],[11,"gt","","",43,null],[11,"ge","","",43,null],[11,"cmp","","",43,null],[11,"eq","","",43,null],[11,"ne","","",43,null],[11,"hash","","",43,null],[11,"fmt","","",43,null],[11,"clone","","",43,null],[11,"get","","Returns the integer key referring to this name.",43,null],[11,"clone","","",44,null],[11,"fmt","","",44,null],[11,"clone","","",45,null],[11,"fmt","","",45,null],[11,"fmt","","",46,null],[11,"clone","","",46,null],[11,"new","","Creates a new `NameInputConversion` from a local-to-global mapping.",46,{"inputs":[],"output":{"name":"nameinputconversion"}}],[11,"get","","Returns the global name value for the given module-local value.",46,null],[11,"insert","","Insert a global name value into the map.",46,null],[11,"fmt","","",47,null],[11,"clone","","",47,null],[11,"new","","Creates a new `NameOutputConversion`, using the given `NameStore`\nto lookup global name values.",47,{"inputs":[{"name":"namestore"}],"output":{"name":"nameoutputconversion"}}],[11,"add","","Adds a name to the collection and returns a module-local value.",47,null],[11,"get_names","","Returns the collection of name string representations.",47,null],[11,"len","","Returns the number of names collected.",47,null],[11,"is_empty","","Returns whether any name was collected.",47,null],[11,"fmt","","",48,null],[11,"clone","","",48,null],[11,"new","","Constructs an empty `NameStore`.",48,{"inputs":[],"output":{"name":"namestore"}}],[11,"add","","Adds a name to the `NameStore` if it is not present.\nReturns a `Name` value to refer to the new or existing name.",48,null],[11,"get_name","","Returns the `Name` value of a given string, if it exists.",48,null],[11,"get","","Returns the string representation of an interned name.",48,null],[11,"iter","","Iterates over all stored names.",48,null],[11,"eq","","",49,null],[11,"ne","","",49,null],[11,"default","","",49,{"inputs":[],"output":{"name":"namemap"}}],[11,"fmt","","",49,null],[11,"clone","","",49,null],[11,"new","","Returns a new `NameMap`.",49,{"inputs":[],"output":{"name":"namemap"}}],[11,"into_slice","","Lowers the map into a `NameMapSlice`, which may not receive new\nkey-value pairs, but can overwrite existing values.",49,null],[11,"clear","","Removes all values from the map.",49,null],[11,"contains_key","","Returns whether the map contains a value for the given name.",49,null],[11,"get","","Returns the value corresponding to the given name.",49,null],[11,"get_values","","Returns a slice of the contained names and values.",49,null],[11,"is_empty","","Returns whether the given map is empty.",49,null],[11,"iter","","Returns an iterator over names and values.",49,null],[11,"insert","","Insert a name-value pair into the map.\nIf a value was already present for the name, it is returned.",49,null],[11,"len","","Returns the number of name-value pairs contained in the map.",49,null],[11,"from_iter","","",49,{"inputs":[{"name":"i"}],"output":{"name":"self"}}],[11,"eq","","",50,null],[11,"ne","","",50,null],[11,"default","","",50,{"inputs":[],"output":{"name":"namemapslice"}}],[11,"fmt","","",50,null],[11,"clone","","",50,null],[11,"contains_key","","Returns whether the map contains a value for the given name.",50,null],[11,"get","","Returns the value corresponding to the given name.",50,null],[11,"get_values","","Returns a slice of the contained names and values.",50,null],[11,"set","","Overwrites the value for the given name.",50,null],[11,"is_empty","","Returns whether the given map is empty.",50,null],[11,"iter","","Returns an iterator over names and values.",50,null],[11,"into_name_map","","Elevates the map into `NameMap`, which may receive new key-value pairs.",50,null],[11,"len","","Returns the number of name-value pairs contained in the map.",50,null],[11,"from_iter","","",50,{"inputs":[{"name":"i"}],"output":{"name":"self"}}],[11,"eq","","",51,null],[11,"ne","","",51,null],[11,"default","","",51,{"inputs":[],"output":{"name":"nameset"}}],[11,"fmt","","",51,null],[11,"clone","","",51,null],[11,"new","","Returns a new `NameSet`.",51,{"inputs":[],"output":{"name":"nameset"}}],[11,"clear","","Removes all names from the set.",51,null],[11,"contains","","Returns whether the set contains the given name.",51,null],[11,"insert","","Inserts the given name into the set.\nReturns `true` if the name was not already contained.",51,null],[11,"into_slice","","Lowers the set into a `NameSetSlice`, which may not receive new name values.",51,null],[11,"is_empty","","Returns whether the set is empty.",51,null],[11,"iter","","Returns an iterator over the set of contained names.",51,null],[11,"len","","Returns the number of names contained in the set.",51,null],[11,"from_iter","","",51,{"inputs":[{"name":"i"}],"output":{"name":"self"}}],[11,"eq","","",52,null],[11,"ne","","",52,null],[11,"default","","",52,{"inputs":[],"output":{"name":"namesetslice"}}],[11,"fmt","","",52,null],[11,"clone","","",52,null],[11,"contains","","Returns whether the set contains the given name.",52,null],[11,"into_name_set","","Elevates the set into a `NameSet`, which may receive new name values.",52,null],[11,"is_empty","","Returns whether the set is empty.",52,null],[11,"iter","","Returns an iterator over names in the set.",52,null],[11,"len","","Returns the number of names in the set.",52,null],[11,"from_iter","","",52,{"inputs":[{"name":"i"}],"output":{"name":"self"}}],[11,"next","","",53,null],[0,"parser","ketos","Parses a series of `lexer` tokens into a code expression.",null,null],[3,"Parser","ketos::parser","Parses a stream of tokens into an expression.",null,null],[3,"ParseError","","Represents an error in parsing input.",null,null],[12,"span","","Span of source code which caused the error",54,null],[12,"kind","","Kind of error generated",54,null],[4,"ParseErrorKind","","Describes the kind of error encountered in parsing.",null,null],[13,"InvalidLiteral","","Error in parsing literal",55,null],[13,"InvalidToken","","Error in parsing token",55,null],[13,"InvalidChar","","Invalid character in input",55,null],[13,"InvalidNumericEscape","","Invalid character in numeric escape sequence `\\xNN` or `\\u{NNNN}`",55,null],[13,"LiteralParseError","","Error parsing literal string into value",55,null],[13,"MissingCloseParen","","Missing closing parenthesis",55,null],[13,"UnbalancedComma","","More commas than backquotes",55,null],[13,"UnexpectedEof","","Unexpected end-of-file",55,null],[13,"UnexpectedToken","","Unexpected token",55,null],[12,"expected","ketos::parser::ParseErrorKind","Token or category of token expected",55,null],[12,"found","","Token found",55,null],[13,"UnknownCharEscape","ketos::parser","Unrecognized character escape",55,null],[13,"UnmatchedParen","","Unmatched `)`",55,null],[13,"UnterminatedChar","","Unterminated character constant",55,null],[13,"UnterminatedComment","","Unterminated block comment",55,null],[13,"UnterminatedString","","Unterminated string constant",55,null],[11,"eq","","",54,null],[11,"ne","","",54,null],[11,"fmt","","",54,null],[11,"clone","","",54,null],[11,"new","","Creates a new `ParseError`.",54,{"inputs":[{"name":"span"},{"name":"parseerrorkind"}],"output":{"name":"parseerror"}}],[11,"fmt","","",54,null],[11,"fmt","","",54,null],[11,"eq","","",55,null],[11,"ne","","",55,null],[11,"fmt","","",55,null],[11,"clone","","",55,null],[11,"fmt","","",55,null],[11,"new","","Creates a new `Parser` using the given `Lexer`.\nIdentifiers received from the lexer will be inserted into the given\n`NameStore`.",56,{"inputs":[{"name":"namestore"},{"name":"lexer"}],"output":{"name":"parser"}}],[11,"skip_shebang","","Skips the "shebang" line of a source file.",56,null],[11,"parse_expr","","Parses an expression from the input stream.",56,null],[11,"parse_single_expr","","Parses a single expression from the input stream.\nIf any tokens remain after the expression, an error is returned.",56,null],[11,"parse_exprs","","Parse a series of expressions from the input stream.",56,null],[11,"read_doc_comment","","Returns the the next token if it is a doc comment.\nOtherwise, `None` is returned and the token will be processed later.",56,null],[0,"pretty","ketos","Facilities for pretty-printing `Value`s.",null,null],[5,"pretty_print","ketos::pretty","Writes a human-readable representation of a `Value` to the given `fmt::Write`.",null,{"inputs":[{"name":"w"},{"name":"namestore"},{"name":"value"},{"name":"u32"}],"output":{"name":"result"}}],[0,"rc_vec","ketos","Implements a reference-counted `Vec` supporting efficient subslicing.",null,null],[3,"RcVec","ketos::rc_vec","Represents a reference-counted view into a `Vec`.\nSubslices may be created which will share the underlying data buffer.",null,null],[8,"RangeArgument","","Argument for functions accepting a range",null,null],[11,"start","","Returns start value",57,null],[11,"end","","Returns end value",57,null],[11,"fmt","","",58,null],[11,"clone","","",58,null],[11,"new","","Constructs a new `RcVec` from a `Vec`.",58,{"inputs":[{"name":"vec"}],"output":{"name":"rcvec"}}],[11,"is_empty","","Returns whether the `RcVec` is empty.",58,null],[11,"len","","Returns the number of elements visible to the `RcVec`.",58,null],[11,"slice","","Returns a subslice of the `RcVec`, with the range being relative\nto this slice's boundaries.",58,null],[11,"into_vec","","Consumes the `RcVec` and returns the contained `Vec`.\nThis will clone the contained values unless the data was uniquely held.",58,null],[11,"push","","Pushes a value into the contained `Vec`.",58,null],[11,"as_ref","","",58,null],[11,"deref","","",58,null],[11,"deref_mut","","",58,null],[11,"extend","","",58,null],[11,"extend","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"eq","","",58,null],[11,"ne","","",58,null],[11,"from","","",58,{"inputs":[{"name":"vec"}],"output":{"name":"rcvec"}}],[0,"run","ketos","Provides a facility for running code within an existing scope.",null,null],[5,"run_code_in_scope","ketos::run","Parses, compiles, and executes the given code within a `Scope`.",null,{"inputs":[{"name":"scope"},{"name":"str"}],"output":{"name":"result"}}],[0,"scope","ketos","Contains values associated with names in a given execution context.",null,null],[3,"GlobalScope","ketos::scope","Represents the global namespace of an execution context.",null,null],[3,"ImportSet","","Represents a set of named macros and values imported from a module.",null,null],[12,"module_name","","Name of module from which to import",59,null],[12,"constants","","Named constants which are imported",59,null],[12,"macros","","Named macros which are imported",59,null],[12,"values","","Named values which are imported",59,null],[3,"MasterNames","","Iterator over standard names available to code;\nthis includes standard values and operators.",null,null],[3,"MasterValues","","Iterator over name/value pairs in the `MasterScope`.",null,null],[4,"MasterScope","","Represents the universal namespace containing built-in symbols\nwhich are available in any context.",null,null],[6,"Scope","","Shared scope object",null,null],[6,"WeakScope","","Weak reference to shared scope object",null,null],[11,"clone","","",59,null],[11,"new","","Convenience method to create an empty `ImportSet` for the named module.",59,{"inputs":[{"name":"name"}],"output":{"name":"importset"}}],[11,"new","","Creates a new global scope containing default values.",60,{"inputs":[{"name":"name"},{"name":"rc"},{"name":"rc"},{"name":"rc"},{"name":"rc"}],"output":{"name":"globalscope"}}],[11,"new_using","","Creates a new global scope using the shared data from the given scope.",60,{"inputs":[{"name":"name"},{"name":"scope"}],"output":{"name":"scope"}}],[11,"add_constant","","Add a named constant value to the scope.",60,null],[11,"add_macro","","Adds a macro function to the global scope.",60,null],[11,"add_name","","Adds a string representation to the contained `NameStore`.",60,null],[11,"add_imports","","Adds a set of imports to the given scope.",60,null],[11,"add_value","","Adds a value to the global scope.",60,null],[11,"add_named_value","","Adds a value with the given name to the global scope.",60,null],[11,"add_value_with_name","","Adds a value to the global scope. The `Name` value for the given\nstring representation is passed to the given closure to create the value.",60,null],[11,"borrow_codemap","","Borrows a reference to the contained `CodeMap`.",60,null],[11,"borrow_codemap_mut","","Borrows a mutable reference to the contained `CodeMap`.",60,null],[11,"borrow_names","","Borrows a reference to the contained `NameStore`.",60,null],[11,"borrow_names_mut","","Borrows a mutable reference to the contained `NameStore`.",60,null],[11,"get_codemap","","Returns a borrowed reference to the contained `CodeMap`.",60,null],[11,"get_constant","","Returns a named constant value, if present.",60,null],[11,"get_io","","Returns a borrowed reference to the contained `GlobalIo`.",60,null],[11,"get_modules","","Returns a borrowed reference to the contained `ModuleRegistry`.",60,null],[11,"get_name","","Returns the scope's name.",60,null],[11,"get_names","","Returns a borrowed reference to the contained `NameStore`.",60,null],[11,"contains_name","","Returns whether the scope contains a given exportable name.",60,null],[11,"contains_constant","","Returns whether the scope contains a constant for the given name.",60,null],[11,"contains_macro","","Returns whether the scope contains a macro for the given name.",60,null],[11,"contains_value","","Returns whether the scope contains a value for the given name.",60,null],[11,"get_macro","","Returns a macro function for the given name, if present.",60,null],[11,"get_value","","Returns a `Value` for the given name, if present.",60,null],[11,"import_all_constants","","Clones all constant values from a scope into this one.",60,null],[11,"import_all_macros","","Clones all exported values from a scope into this scope.",60,null],[11,"import_all_values","","Clones all exported values from a scope into this scope.",60,null],[11,"is_exported","","Returns whether the given name has been exported in this scope.",60,null],[11,"set_exports","","Assigns a set of exported names for this scope.",60,null],[11,"with_name","","Calls a closure with the borrowed string representation of a name.",60,null],[11,"with_exports","","Calls a closure with the set of exported names.",60,null],[11,"with_imports","","Calls a closure with the set of imported values.",60,null],[11,"with_constants","","Calls a closure with the set of defined constants.",60,null],[11,"with_macros","","Calls a closure with the set of defined macros.",60,null],[11,"with_values","","Calls a closure with the set of defined values.",60,null],[11,"contains","","Returns whether the given name corresponds to a value in master scope.",61,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[11,"can_define","","Returns whether the given name can be defined in global scope.",61,{"inputs":[{"name":"name"}],"output":{"name":"bool"}}],[11,"get","","Returns a value corresponding to the given name in master scope.",61,{"inputs":[{"name":"name"}],"output":{"name":"option"}}],[11,"get_names","","Returns an iterator over all standard names.",61,{"inputs":[],"output":{"name":"masternames"}}],[11,"get_values","","Returns an iterator over all names contained in master scope.",61,{"inputs":[],"output":{"name":"mastervalues"}}],[11,"next","","",62,null],[11,"len","","",62,null],[11,"next","","",63,null],[11,"size_hint","","",63,null],[11,"len","","",63,null],[0,"string_fmt","ketos","Implements string formatting syntax.",null,null],[4,"FormatError","ketos::string_fmt","Represents an error in formatting a string.",null,null],[13,"Error","","Error message",64,null],[13,"ExtraFields","","Extraneous fields to directive",64,null],[13,"FieldOverflow","","Field value exceeded expected range",64,null],[13,"FieldTypeError","","Wrong type to field value",64,null],[12,"expected","ketos::string_fmt::FormatError","Type of value expected",64,null],[12,"found","","Type found",64,null],[13,"IncompleteDirective","ketos::string_fmt","End of format string reached before directive completed",64,null],[13,"IncorrectCloseDelim","","Group-closing directive encountered without matching opener",64,null],[13,"IncorrectFlags","","Incorrect flags given to directive",64,null],[13,"InfiniteLoop","","Infinite loop detected in iteration directive `~{...~}`",64,null],[13,"InsufficientArguments","","Insufficient arguments to format string",64,null],[13,"IntegerOverflow","","Overflow converting a value to `Integer`",64,null],[13,"InvalidFlags","","Invalid flags specifier",64,null],[13,"InvalidRadix","","Invalid radix to `~r` directive",64,null],[13,"MisplacedDirective","","Directive encountered where it is not expected",64,null],[13,"MissingCloseDelim","","End of format string reached with open grouping directive",64,null],[13,"MissingBranch","","Missing required branch within a conditional directive",64,null],[13,"ExtraBranch","","End of branch directive found where end of conditional was expected",64,null],[13,"TypeError","","Argument value of incorrect type received",64,null],[12,"expected","ketos::string_fmt::FormatError","Expected value type",64,null],[12,"found","","Type found",64,null],[13,"UnrecognizedDirective","ketos::string_fmt","Unrecognized directive character",64,null],[5,"format_string","","Constructs a formatted string using given the format `fmt` and input values.",null,null],[11,"eq","","",64,null],[11,"ne","","",64,null],[11,"fmt","","",64,null],[11,"clone","","",64,null],[11,"expected","","Convenience function to return a `TypeError` value when `expected`\ntype is expected, but some other type of value is found.",64,{"inputs":[{"name":"str"},{"name":"value"}],"output":{"name":"formaterror"}}],[11,"fmt","","",64,null],[0,"trace","ketos","Provides facilities for expressing and storing tracebacks.",null,null],[3,"Trace","ketos::trace","Represents a series of items, beginning with the outermost context\nand culminating with the context in which an error was generated.",null,null],[4,"TraceItem","","Represents a single traceable event in either compilation or\nexecution of code.",null,null],[13,"CallCode","","Call to a code object; `(scope name, code name)`",65,null],[13,"CallExpr","","Call to a code object generated by an expression",65,null],[13,"CallLambda","","Call to an anonymous function",65,null],[13,"CallMacro","","Call to a macro; `(scope name, macro name)`",65,null],[13,"CallOperator","","Expansion of an operator; `(scope name, operator name)`",65,null],[13,"CallSys","","Call to a system function",65,null],[13,"Define","","Definition of a named value; `(scope name, definition name)`",65,null],[13,"DefineConst","","Definition of a constant value; `(scope name, const name)`",65,null],[13,"DefineLambda","","Definition of an anonymous lambda",65,null],[13,"DefineMacro","","Definition of a macro; `(scope name, macro name)`",65,null],[13,"DefineStruct","","Definition of a structure; `(scope name, struct name)`",65,null],[13,"UseModule","","Module import declaration; `(scope name, module name)`",65,null],[5,"clear_traceback","","Removes the traceback value for the current thread.",null,{"inputs":[],"output":null}],[5,"get_traceback","","Clones and returns the traceback value for the current thread.",null,{"inputs":[],"output":{"name":"option"}}],[5,"set_traceback","","Assigns a traceback value for the current thread.",null,{"inputs":[{"name":"trace"}],"output":null}],[5,"take_traceback","","Removes and returns the traceback value for the current thread.",null,{"inputs":[],"output":{"name":"option"}}],[11,"clone","","",66,null],[11,"new","","Creates a new `Trace` from a series of items.",66,{"inputs":[{"name":"vec"},{"name":"option"}],"output":{"name":"trace"}}],[11,"single","","Creates a new `Trace` from a single item.",66,{"inputs":[{"name":"traceitem"},{"name":"option"}],"output":{"name":"trace"}}],[11,"get_items","","Returns the series of traced items.",66,null],[11,"get_expr","","Returns a borrowed reference to the optional contained expression.",66,null],[11,"take_expr","","Takes the optional contained expression and returns it.",66,null],[11,"fmt","","",65,null],[11,"clone","","",65,null],[11,"fmt","","",66,null],[0,"value","ketos","Represents any possible value type.",null,null],[3,"ForeignFn","ketos::value","Represents a foreign value that contains a callable function or closure",null,null],[3,"Struct","","Represents a structure value containing named fields",null,null],[12,"def","","Struct definition",67,null],[12,"fields","","Struct fields",67,null],[3,"StructDef","","Represents the definition of a class of struct value",null,null],[12,"name","","Struct name",68,null],[12,"fields","","Struct fields, mapped to names of expected types",68,null],[4,"Value","","Represents a value.",null,null],[13,"Unit","","`()`",69,null],[13,"Unbound","","Placeholder for missing optional values;\nshould not be used to represent any real value.",69,null],[13,"Bool","","Boolean -- `true` or `false`",69,null],[13,"Float","","Floating point number",69,null],[13,"Integer","","Signed arbitrary precision integer",69,null],[13,"Ratio","","Arbitrary precision ratio",69,null],[13,"Struct","","Struct value",69,null],[13,"StructDef","","Struct definition",69,null],[13,"Name","","Literal name",69,null],[13,"Keyword","","Keyword",69,null],[13,"Char","","Character",69,null],[13,"String","","String",69,null],[13,"Quasiquote","","Quasiquoted value; quote depth **MUST NEVER be zero.**",69,null],[13,"Comma","","Comma'd value; comma depth **MUST NEVER be zero.**",69,null],[13,"CommaAt","","Comma-at'd value; quote depth **MUST NEVER be zero**.",69,null],[13,"Quote","","Quoted value; quote depth **MUST NEVER be zero**.",69,null],[13,"List","","Series of one or more values.\n**MUST NEVER be of length zero.** Use `Unit` to represent empty lists.",69,null],[13,"Function","","Function implemented in Rust",69,null],[13,"Lambda","","Compiled bytecode function",69,null],[13,"Foreign","","Boxed value of a foreign type",69,null],[8,"AnyValue","","A helper trait that is necessary as long as `Any::get_type_id` is unstable.",null,null],[10,"type_id","","Returns the `TypeId` value for the type.",70,null],[8,"ForeignValue","","Represents a type of value defined outside the core interpreter.",null,null],[11,"compare_to","","Performs ordered comparison between two values of a foreign type.",71,null],[11,"compare_to_value","","Performs ordered comparison between two values.",71,null],[11,"is_identical_to","","Returns whether the two values are identical.\nThis concept is the same as equality, except in the case of floating\npoint values, where two `NaN` values are considered identical.",71,null],[10,"is_equal_to","","Tests for equality between two values of a foreign type.",71,null],[11,"is_equal_to_value","","Tests for equality between two values.",71,null],[11,"fmt_debug","","Format the value in debugging mode.",71,null],[11,"fmt_display","","Format the value in display mode.",71,null],[10,"type_name","","Return the value's type name.",71,null],[11,"is_type","","Returns whether this value is of the named type.",71,null],[11,"call_value","","Calls the value as a function.",71,null],[8,"FromValueRef","","Borrows a Rust value from a `Value`",null,null],[10,"from_value_ref","","Returns the borrowed value",72,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[8,"FromValue","","Consumes a `Value` and returns a Rust value",null,null],[10,"from_value","","Consumes the `Value` and returns a Rust value",73,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[11,"fmt","","",69,null],[11,"clone","","",69,null],[11,"new_foreign","","Returns a value of a foreign type.",69,{"inputs":[{"name":"t"}],"output":{"name":"value"}}],[11,"new_foreign_fn","","Returns a value containing a foreign function.",69,{"inputs":[{"name":"name"},{"name":"f"}],"output":{"name":"value"}}],[11,"compare","","Compares two values; returns an error if the values cannot be compared.",69,null],[11,"is_equal","","Tests two values for equality; returns an error if the values cannot be\ncompared.",69,null],[11,"is_identical","","Returns whether this value is identical to another.\nThe notable difference between this and `eq` is that float `NaN` values\nwill compare equal.",69,null],[11,"take","","Replaces the value with `Unit` and returns the old value.",69,null],[11,"quasiquote","","Returns the value, quasi-quoted.",69,null],[11,"comma","","Returns the value, comma'd.",69,null],[11,"comma_at","","Returns the value, comma-at'd.",69,null],[11,"quote","","Returns the value, quoted.",69,null],[11,"type_name","","Returns a string describing the type of the value.",69,null],[11,"is","","Returns whether the contained value is of the given type.",71,null],[11,"downcast_ref","","Returns a reference to the contained value, if it is of the given type.",71,null],[11,"downcast_mut","","Returns a mutable reference to the contained value,\nif it is of the given type.",71,null],[11,"fmt","","",74,null],[11,"compare_to","","",74,null],[11,"is_equal_to","","",74,null],[11,"fmt_debug","","",74,null],[11,"type_name","","",74,null],[11,"call_value","","",74,null],[11,"fmt","","",69,null],[11,"fmt","","",69,null],[11,"from_value","ketos::integer","",16,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[11,"from_value","","",17,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[11,"from_value","ketos::value","",69,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[11,"from_value","ketos::function","",13,{"inputs":[{"name":"value"}],"output":{"name":"result"}}],[11,"from","ketos::value","",69,null],[11,"from","","",69,{"inputs":[{"name":"bool"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"char"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"integer"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"ratio"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"string"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"f32"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"f64"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"str"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"vec"}],"output":{"name":"value"}}],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,{"inputs":[{"name":"rcvec"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"i8"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"i16"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"i32"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"i64"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"isize"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"u8"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"u16"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"u32"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"u64"}],"output":{"name":"value"}}],[11,"from","","",69,{"inputs":[{"name":"usize"}],"output":{"name":"value"}}],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"from","","",69,null],[11,"fmt","","",67,null],[11,"clone","","",67,null],[11,"new","","Creates a new `Struct` value with the given `StructDef` and field values.",67,{"inputs":[{"name":"rc"},{"name":"namemapslice"}],"output":{"name":"struct"}}],[11,"get_field","","Returns the value for the named field, if present.",67,null],[11,"fmt","","",68,null],[11,"clone","","",68,null],[11,"eq","","",68,null],[11,"new","","Creates a new `StructDef` with the given name and fields.",68,{"inputs":[{"name":"name"},{"name":"namemapslice"}],"output":{"name":"structdef"}}],[14,"ketos_fn!","ketos","Creates a foreign function that implicitly converts input arguments\ninto Rust values and converts its result into a `ketos` value.",null,null],[14,"foreign_type_conversions!","","Generates conversion trait implementations for the given type.",null,null],[11,"hash","ketos::integer","",15,null],[11,"fmt","","",15,null],[11,"clone","","",15,null],[11,"cmp","","",15,null],[11,"partial_cmp","","",15,null],[11,"eq","","",15,null],[11,"decode","","",15,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",15,null],[11,"neg","","Negate Sign value.",15,null],[11,"mul","","",15,null]],"paths":[[3,"Code"],[3,"CodeBlock"],[4,"Instruction"],[4,"JumpInstruction"],[3,"CodeReader"],[4,"CompileError"],[3,"ModuleCode"],[4,"DecodeError"],[4,"EncodeError"],[4,"Error"],[4,"ExecError"],[3,"SystemFn"],[3,"Function"],[3,"Lambda"],[4,"Arity"],[4,"Sign"],[3,"Integer"],[3,"Ratio"],[3,"FromStrIntError"],[3,"FromStrRatioError"],[3,"FromStrRadixError"],[3,"Interpreter"],[3,"GlobalIo"],[3,"IoError"],[4,"IoMode"],[8,"SharedWrite"],[3,"Sink"],[3,"File"],[3,"SpanDisplay"],[3,"Span"],[4,"Token"],[3,"CodeMap"],[3,"Lexer"],[3,"Module"],[8,"ModuleLoader"],[3,"ModuleBuilder"],[3,"ModuleRegistry"],[3,"NullModuleLoader"],[3,"ChainModuleLoader"],[3,"BuiltinModuleLoader"],[3,"FileModuleLoader"],[8,"NameDebug"],[8,"NameDisplay"],[3,"Name"],[3,"NameDebugger"],[3,"NameDisplayer"],[3,"NameInputConversion"],[3,"NameOutputConversion"],[3,"NameStore"],[3,"NameMap"],[3,"NameMapSlice"],[3,"NameSet"],[3,"NameSetSlice"],[3,"SetIter"],[3,"ParseError"],[4,"ParseErrorKind"],[3,"Parser"],[8,"RangeArgument"],[3,"RcVec"],[3,"ImportSet"],[3,"GlobalScope"],[4,"MasterScope"],[3,"MasterNames"],[3,"MasterValues"],[4,"FormatError"],[4,"TraceItem"],[3,"Trace"],[3,"Struct"],[3,"StructDef"],[4,"Value"],[8,"AnyValue"],[8,"ForeignValue"],[8,"FromValueRef"],[8,"FromValue"],[3,"ForeignFn"]]}; initSearch(searchIndex);