Skip to main content

sim_lib_binding/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Binding behavior for the SIM runtime: lexical, dynamic, and scoped binding.
4//!
5//! The kernel defines the binding-related contracts; this crate supplies the
6//! concrete binding organ (lexical/letrec scopes, dynamic parameters, modes).
7
8mod claims;
9mod dynamic;
10mod let_form;
11mod lexical;
12mod modes;
13mod runtime;
14
15/// Cookbook recipes for the binding organ, embedded at build time.
16pub static RECIPES: sim_cookbook::EmbeddedDir =
17    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
18
19pub use claims::{
20    binding_dynamic_let_op_key, binding_let_op_key, binding_let_star_op_key, binding_letrec_op_key,
21    binding_op_keys, binding_organ_symbol, binding_parameterize_op_key,
22    binding_profile_modes_op_key, publish_binding_organ_claims,
23    publish_binding_organ_claims_for_lib,
24};
25pub use dynamic::{DynamicEnv, Parameter};
26pub use let_form::LetForm;
27pub use lexical::{
28    BindingInitializer, LexicalEnv, LexicalFunction, eval_let, eval_let_star, eval_letrec,
29    lexical_function_value,
30};
31pub use modes::{BindingProfileModes, BindingScopeMode, HygieneMode};
32pub use runtime::{BindingLib, binding_exports, install_binding_lib, manifest_name};
33
34#[cfg(test)]
35mod tests;