[racket] a little macro exercise

From: Eli Barzilay (eli at barzilay.org)
Date: Fri Oct 8 23:39:34 EDT 2010

15 minutes ago, Neil Van Dyke wrote:
> Eli Barzilay wrote at 10/08/2010 10:57 PM:
> > Here's a much shorter version that doesn't require goto emulation,
> 
> Nice.  On principle, I was going to trouble to avoid redundant
> tests, as well as give the compiler a single optimization-friendly
> "case" form, followed by tail calls.  In practice, I guess any
> runtime performance difference would likely be in the noise.

Well, if you want to be picky, then my version is quadratic in the
size of the lists it `memq's over -- but that could be addressed
together with your point by doing something like converting

  (cas-cad-e foo [(a b c) bar] [(x y z) baz])

to

  (let ([t (assq foo '([a . 1] [b . 1] [c . 1]
                       [x . 2] [y . 2] [z . 2]))])
    (when (<= t 2)
      (when (<= t 1)
        bar)
      baz))

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!


Posted on the users mailing list.