removing non-portable passing of improper list to macro

Fixes issue #318.
This commit is contained in:
Alex Shinn 2016-04-02 18:10:44 +09:00
parent 1ec9d578d0
commit 7f22b61cf2

View file

@ -450,14 +450,14 @@
;; Syntax pattern with ellipsis in middle of improper list. ;; Syntax pattern with ellipsis in middle of improper list.
(define-syntax part-2x (define-syntax part-2x
(syntax-rules () (syntax-rules ()
((_ a b (m n) ... x y . rest) ((_ (a b (m n) ... x y . rest))
(vector (list a b) (list m ...) (list n ...) (list x y) (vector (list a b) (list m ...) (list n ...) (list x y)
(cons "rest:" 'rest))) (cons "rest:" 'rest)))
((_ . rest) 'error))) ((_ . rest) 'error)))
(test '#((10 43) (31 41 51) (32 42 52) (63 77) ("rest:")) (test '#((10 43) (31 41 51) (32 42 52) (63 77) ("rest:"))
(part-2x 10 (+ 21 22) (31 32) (41 42) (51 52) (+ 61 2) 77)) (part-2x (10 (+ 21 22) (31 32) (41 42) (51 52) (+ 61 2) 77)))
(test '#((10 43) (31 41 51) (32 42 52) (63 77) ("rest:" . "tail")) (test '#((10 43) (31 41 51) (32 42 52) (63 77) ("rest:" . "tail"))
(part-2x 10 (+ 21 22) (31 32) (41 42) (51 52) (+ 61 2) 77 . "tail")) (part-2x (10 (+ 21 22) (31 32) (41 42) (51 52) (+ 61 2) 77 . "tail")))
;; underscore ;; underscore
(define-syntax count-to-2 (define-syntax count-to-2