// init.odd - Basic language functionality [module [odd core]] def(not lambda(x) { =(x #f) }) def(unspecified if(#f #f)) defsyntax(let x e) { // let(x 1) { x } => [[lambda [x] x] 1] syntax-assert(x "Expected exactly 3 arguments to let" =(length(x) 4)) def(name list-ref(x 1)) def(value list-ref(x 2)) def(body list-ref(x 3)) syntax-assert(x "Expected first argument to let to be a symbol" symbol?(name)) def(ret list(list('lambda name synclo(e body list(name))) synclo(e value))) ret } defsyntax(and x e) { def(len length(x)) if(=(len 1)) { unspecified } { if(=(len 2)) { synclo(e list-ref(x 1)) } { def(ret list('let 'tmp synclo(e list-ref(x 1)) list('if 'tmp cons('and synclo(e list-ref-rest(x 1))) #f))) print(ret) ret } } } [export not and let quasiquote]