Don't treat underscore as a pattern variable. Fixes issue #382.

This commit is contained in:
Alex Shinn 2017-01-01 09:48:34 +09:00
parent 71f4db7d17
commit 9fa8d8c1f0
2 changed files with 10 additions and 2 deletions

View file

@ -706,7 +706,8 @@
(_reverse (rename 'reverse))
(_vector->list (rename 'vector->list))
(_list->vector (rename 'list->vector))
(_cons3 (rename 'cons-source)))
(_cons3 (rename 'cons-source))
(_underscore (rename '_)))
(define ellipsis (if ellipsis-specified? (cadr expr) (rename '...)))
(define lits (if ellipsis-specified? (car (cddr expr)) (cadr expr)))
(define forms (if ellipsis-specified? (cdr (cddr expr)) (cddr expr)))
@ -729,7 +730,9 @@
(list _and
(list _compare v (list _rename (list _quote p)))
(k vars))
(list _let (list (list p v)) (k (cons (cons p dim) vars)))))
(if (compare p _underscore)
(k vars)
(list _let (list (list p v)) (k (cons (cons p dim) vars))))))
((ellipsis? p)
(cond
((not (null? (cdr (cdr p))))

View file

@ -460,6 +460,11 @@
(part-2x (10 (+ 21 22) (31 32) (41 42) (51 52) (+ 61 2) 77 . "tail")))
;; underscore
(define-syntax underscore
(syntax-rules ()
((foo _) '_)))
(test '_ (underscore foo))
(define-syntax count-to-2
(syntax-rules ()
((_) 0)