use langkit::Value;
fn main() {
let mut lang = langkit::langkit! {
name("arc"),
extension(".arc"),
defaults(),
mut_kw("var"),
lib("base"),
action("print", Box::new(|_interp, args| {
let s: Vec<String> = args.iter().map(|a| a.to_string()).collect();
println!("{}", s.join(" "));
Value::Null
}))
};
println!("--- Testing Modules ---");
std::fs::write("math.arc", "fn add(a, b) {\n return a + b\n}").ok();
let code = "
import \"math.arc\"
let result = math.add(10, 20)
print result
";
if let Err(e) = lang.run(code) {
eprintln!("Error: {}", e);
}
std::fs::remove_file("math.arc").ok();
println!("\n--- Testing Builtins ---");
let builtins_code = "
var m = map_new()
m = map_set(m, \"key\", 42)
print \"Map len:\", map_len(m)
print \"Value:\", map_get(m, \"key\")
var s = set_new()
s = set_add(s, 1)
s = set_add(s, 2)
print \"Set len:\", set_len(s)
";
if let Err(e) = lang.run(builtins_code) {
eprintln!("Error: {}", e);
}
}