1
Wie kann ich testen, ob ein Syntaxmusterparameter eine leere Liste ist? Ich teste mich in List.Wie überprüft man, dass ein Makroparameter eine leere Liste in Syntax-Case ist?
(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)
Allerdings, wenn ich gegen eine Reihe testen, funktioniert es:
(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)
Vielen Dank, das war eine peinliche Geheimnis! –