From d312b0598c17e0f2beb34b7d965015e64b765c6b Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 18 May 2020 19:11:11 -0400 Subject: [PATCH] WIP --- scheme/cyclone/transforms.sld | 3 +-- scheme/cyclone/util.sld | 1 + scheme/eval.sld | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 0a6affb8..39e495c1 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -1001,10 +1001,9 @@ if (acc) { (not (assoc 'if renamed))) ;; Add a failsafe here in case macro expansion added more ;; incomplete if expressions. - ;; FUTURE: append the empty (unprinted) value instead of #f (let ((new-ast (if (if-else? ast) `(if ,@(map (lambda (a) (convert a renamed)) (cdr ast))) - (convert (append ast '(#f)) renamed)))) + (convert (append ast (list (void))) renamed)))) (cond ;; Optimization - convert (if (not a) b c) into (if a c b) ((and (app? (if->condition new-ast)) diff --git a/scheme/cyclone/util.sld b/scheme/cyclone/util.sld index dd7536ff..e16b93b8 100644 --- a/scheme/cyclone/util.sld +++ b/scheme/cyclone/util.sld @@ -172,6 +172,7 @@ (or (integer? exp) (real? exp) (complex? exp) + (eq? (void) exp) ;; Poor man's (void?) (string? exp) (vector? exp) (bytevector? exp) diff --git a/scheme/eval.sld b/scheme/eval.sld index 42001ff6..acb5e95c 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -116,6 +116,7 @@ (define (self-evaluating? exp) (cond ((number? exp) #t) ((boolean? exp) #t) + ((eq? (void) exp) #t) ;; Poor man's (void?) ((string? exp) #t) ((vector? exp) #t) ((bytevector? exp) #t) @@ -159,7 +160,7 @@ (define (if-alternative exp) (if (not (null? (cdddr exp))) ;; TODO: add (not) support (cadddr exp) - #f)) + (void))) (define (make-if predicate consequent alternative) (list 'if predicate consequent alternative)) @@ -1022,7 +1023,7 @@ ;; Insert default value for missing else clause ;; FUTURE: append the empty (unprinted) value ;; instead of #f - #f))) + (void)))) ((define-c? exp) exp) ((define-syntax? exp) ;(trace:info `(define-syntax ,exp))