iowo/src/builtins/mod.rs

28 lines
666 B
Rust
Raw Normal View History

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();
ns
}