2023-11-16 19:22:26 +01:00
|
|
|
use self::namespace::{GlobalNamespace, TypeDef};
|
|
|
|
|
|
|
|
pub mod namespace;
|
|
|
|
|
|
|
|
pub fn initialise_globals() -> GlobalNamespace {
|
|
|
|
let mut ns = GlobalNamespace::init();
|
|
|
|
|
|
|
|
let numeric = ns.register_trait("Numeric").unwrap();
|
|
|
|
|
|
|
|
ns.register_type("integer").unwrap().add_trait(&numeric);
|
|
|
|
ns.register_type("float").unwrap().add_trait(&numeric);
|
|
|
|
|
2023-11-17 21:37:55 +01:00
|
|
|
ns.register_type("string").unwrap();
|
|
|
|
|
|
|
|
// def math add [ Numeric Numeric ] -> Numeric
|
|
|
|
ns.register_command(
|
|
|
|
"add",
|
|
|
|
Some(TypeDef::List(vec![
|
|
|
|
TypeDef::Trait(numeric),
|
|
|
|
TypeDef::Trait(numeric),
|
|
|
|
])),
|
|
|
|
Some(TypeDef::Trait(numeric)),
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
|
2023-11-16 19:22:26 +01:00
|
|
|
ns
|
|
|
|
}
|