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......    <--