too few ellipses? added by anandamide on Thu Apr 14 20:52:12 2016
(define (if-proc-apply it var) (if (procedure? it) (if (eq? var '()) (it '()) (apply it var)) it)) (define-syntax class (syntax-rules (public private) ((class (?var0 ?val0) ...) (let* ((?var0 ?val0) ...) (lambda (p . args) (cond ((eq? p '?var0) (if-proc-apply ?var0 args)) ... (else (error "input not found")))))))) ;so that works ^^^ ;usage (define ob (class (a 10) (b 20) (set-a! (lambda (x) (set! a x))) (set-b! (lambda (x) (set! b x))) (fun (lambda (x) (* (+ a b) (- a b)))))) (ob 'a) -> 10 (ob 'b) -> 20 (ob 'set-a! 50) (ob 'a) -> 50 (ob 'fun) -> 2100 ------------------------------------- now this: (define (if-proc-apply it var) (if (procedure? it) (if (eq? var '()) (it '()) (apply it var)) it)) (define-syntax class (syntax-rules (public private) ((class (?var0 ?val0) ...) (let* ((?var0 ?val0) ...) (lambda (p . args) (cond ((eq? p '?var0) (if-proc-apply ?var0 args)) ... (else (error "input not found")))))) ((class private (?var0 ?val0) ... public (?var1 ?val1) ...) (let* ((?var0 ?val0) ...) (let* ((?var1 ?val1 ...)) (lambda (p . args) (cond ((eq? p '?var1) (if-proc-apply ?var1 args)) ... (else (error "input not found"))))))))) ;returns Error: during expansion of (syntax-rules ...) - template dimension error (too few ellipses?): ?var1 Call history: <syntax> (define-syntax class (syntax-rules (public private) ((class (?var0 ?val0) ...) (let* ((?var0 ?val0) ...... <syntax> (##core#define-syntax class (syntax-rules (public private) ((class (?var0 ?val0) ...) (let* ((?var0 ...... <syntax> (syntax-rules (public private) ((class (?var0 ?val0) ...) (let* ((?var0 ?val0) ...) (lambda (p . arg...... <--