syntax-rules has difficulty handling ellipsis in some cases?
|Reported by:||sjamaan||Owned by:||sjamaan|
|Priority:||not urgent at all||Milestone:||someday|
Description (last modified by sjamaan)
As reported by Sascha Ziemann, this macro application fails while it ought to succeed:
(define-syntax define-facts (syntax-rules () ((_ (name a0 a1 ...) ((v00 v01 ...) (v10 v11 ...) ...)) '(define (name a0 a1 ...) (conde ((== a0 v00) (== a1 v01) ...) ((== a0 v10) (== a1 v11) ...) ...)))))
The failing application:
(define-facts (fathero f c) (("Abraham" "Ismael") ("Abraham" "Isaac") ("Isaac" "Jacob") ("Jacob" "Benjamin")))
A few other Schemes have difficulty with it, notably Chibi, Gauche, Scheme48 and Gambit (the former two returning the wrong result and the latter two giving an error). Racket, MIT, Ikarus and Guile work fine.