On Thu, 28 Mar 2007, maina
@gmail.com wrote:
> hi
> Why this macro don't work?
> (define-syntax myor
> (syntax-rules ()
> ((myor) #f)
> ((myor e) e)
> ((myor e1 . es)
> (let ((r e1)) (if r r (myor . es))))))
> (define (nonzero? r) (myor (negative? r) (positive? r)))
> (display (nonzero? 1)) (newline)
> (display (nonzero? -1))(newline)
> (display (nonzero? 0)) (newline)
> (display (nonzero?)) (newline)
> ;; procedure nonzero?: expects 1 argument, given 0
Your macro works just fine, I think. Your "nonzero?" function, on the