[−][src]Crate ketos
Ketos is a Lisp dialect functional programming language, designed to be a scripting and extension language for Rust programs.
use ketos::{Interpreter, FromValueRef}; // Create an interpreter. let interp = Interpreter::new(); // Define a function. interp.run_code(r#" (define (foo a) (* a 2)) "#, None).unwrap(); // Call the function. let result = interp.call("foo", vec![123.into()]).unwrap(); // Get a Rust value back. let n = i32::from_value_ref(&result).unwrap(); assert_eq!(n, 246);
See examples/
for more examples on interacting with the Ketos interpreter.
Re-exports
pub use crate::bytecode::Code; |
pub use crate::bytes::Bytes; |
pub use crate::completion::complete_name; |
pub use crate::compile::CompileError; |
pub use crate::encode::DecodeError; |
pub use crate::encode::EncodeError; |
pub use crate::error::Error; |
pub use crate::exec::Context; |
pub use crate::exec::ExecError; |
pub use crate::exec::panic; |
pub use crate::exec::panic_none; |
pub use crate::function::Arity; |
pub use crate::interpreter::Builder; |
pub use crate::interpreter::Interpreter; |
pub use crate::integer::Integer; |
pub use crate::integer::Ratio; |
pub use crate::io::File; |
pub use crate::io::GlobalIo; |
pub use crate::io::IoError; |
pub use crate::io::SharedWrite; |
pub use crate::module::BuiltinModuleLoader; |
pub use crate::module::FileModuleLoader; |
pub use crate::module::Module; |
pub use crate::module::ModuleBuilder; |
pub use crate::module::ModuleLoader; |
pub use crate::name::Name; |
pub use crate::name::NameStore; |
pub use crate::parser::ParseError; |
pub use crate::parser::ParseErrorKind; |
pub use crate::restrict::RestrictConfig; |
pub use crate::restrict::RestrictError; |
pub use crate::run::run_code; |
pub use crate::scope::GlobalScope; |
pub use crate::scope::Scope; |
pub use crate::structs::StructDef; |
pub use crate::structs::StructValue; |
pub use crate::trace::clear_traceback; |
pub use crate::trace::get_traceback; |
pub use crate::trace::set_traceback; |
pub use crate::trace::take_traceback; |
pub use crate::trace::Trace; |
pub use crate::value::ForeignValue; |
pub use crate::value::FromValue; |
pub use crate::value::FromValueRef; |
pub use crate::value::Value; |
Modules
any | Support for |
args | Provides a helper macro for extracting arguments from Ketos values. |
bytecode | Implements encoding and decoding of bytecode instruction format. |
bytes | Implements a reference-counted byte string supporting efficient subslicing. |
compile | Compiles expressions into bytecode objects. |
completion | Performs name-based text completion using a |
encode | Implements encoding and decoding of compiled bytecode file format. |
error | Contains consolidated |
exec | Implements a virtual machine which interprets bytecode functions. |
function | Contains implementations of core system functions. |
integer | Arbitrary precision integer and ratio types. |
interpreter | Provides a context in which to compile and execute code. |
io | Creates an abstraction layer to I/O operations |
lexer | Produces tokens from an input stream. |
module | Implements loading named values from code modules. |
name | Implements name interning and containers using names as keys. |
parser | Parses a series of |
pretty | Facilities for pretty-printing |
rc_vec | Implements a reference-counted |
restrict | Configuration of runtime execution restrictions |
run | Provides a facility for running code within an existing scope. |
scope | Contains values associated with names in a given execution context. |
string_fmt | Implements string formatting syntax. |
structs | Implementation of |
trace | Provides facilities for expressing and storing tracebacks. |
value | Represents any possible value type. |
Macros
ketos_args | Parses a set of arguments from a |
ketos_closure | Similar to |
ketos_fn | Creates a foreign function that implicitly converts input arguments
into Rust values and converts its result into a |