1
構文パターンパラメータが空リストであるかどうかをテストするにはどうすればよいですか?私は狡猾でテストしています。マクロパラメータがsyntax-case内の空のリストであることを確認する方法はありますか?
(define-syntax mkl
(lambda (x)
(syntax-case x()
[(_ var params code)
(if (null? (syntax->datum #'params)); doesn't match anyway !!!???
#'(lambda (var) code)
#'(lambda (var) (cons 1 code)))])))
;;; try: expecting: (100 200) but got: (1 100 200)
(display
((mkl s '() s) '(100 200)))
(newline)
私は数に対してテストしかし、もし、それが動作します:
(define-syntax mkl2
(lambda (x)
(syntax-case x()
[(_ var params code)
(if (= (syntax->datum #'params) 0); matches OK
#'(lambda (var) code)
#'(lambda (var) (cons 1 code)))])))
;;; try: expecting: (100 200) and it works OK
(display
((mkl2 s 0 s) '(100 200)))
(newline)
おかげでそんなに、これは厄介な謎でしたの! –