From 21befc8c8ab2e91632f5341b4fa9425cf3c815ff Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Mon, 13 Oct 2025 09:18:10 +0200 Subject: update from workshop 2bis --- lambda-calcul/rust/src/builtins.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lambda-calcul/rust/src/builtins.rs (limited to 'lambda-calcul/rust/src/builtins.rs') diff --git a/lambda-calcul/rust/src/builtins.rs b/lambda-calcul/rust/src/builtins.rs new file mode 100644 index 0000000..7064c1c --- /dev/null +++ b/lambda-calcul/rust/src/builtins.rs @@ -0,0 +1,25 @@ +use crate::ast::Value; +use std::collections::HashMap; + +pub struct Builtins {} + +impl Builtins { + pub fn new() -> HashMap { + let mut map = HashMap::new(); + map.insert("+".to_string(), Value::Prim("+".to_string())); + map + } +} + +pub fn plus(v: Value) -> Value { + match v { + Num(i) => Lam(gensym(), + } +} + +pub fn builtins(sym: &String) -> Option Value>> { + match sym.as_str() { + "+" => Some(Box::new(plus)), + _ => None, + } +} -- cgit v1.2.3