From 37c646859f2382fe003d0a95cc274414ba84f36c Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Thu, 4 Aug 2022 22:02:49 -0700 Subject: Add if, and, or, when and friends. --- lib/csc/macros.csc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'lib/csc/macros.csc') diff --git a/lib/csc/macros.csc b/lib/csc/macros.csc index d41e9da..fc72f74 100644 --- a/lib/csc/macros.csc +++ b/lib/csc/macros.csc @@ -802,6 +802,16 @@ (_ (raise-syntax-error "unexpected form in builtin-if")))))) + (define builtin-sequence + (make-macro-transformer + (lambda (x) + (syntax-case x + ((_ head tail) + (make-sequence (expand-syntax-object head) + (expand-syntax-object tail))) + (_ (raise-syntax-error "unexpected form in builtin-sequence")))))) + + (define builtins-environment (alist->substitutions (list (cons 'syntax-rules builtin-syntax-rules) @@ -814,7 +824,8 @@ (cons 'define-syntax builtin-define-syntax) (cons 'call-builtin builtin-call-builtin) (cons 'set! builtin-set) - (cons 'builtin-if builtin-if)))) + (cons 'builtin-if builtin-if) + (cons 'builtin-sequence builtin-sequence)))) ; Expands the body of a library, or top level. expand-body can be thought -- cgit v1.3.1