On Jul 12, 2014, at 6:19 PM, Daniel Prager wrote: > Hi Brian > > r >= 0 && r <= 4 && c >= 0 && c <= r > > > implies > > 0 <= c <= r <= 4 > > > Or using prefix and the variable-arity of <=: > > (define (is-pos r c) > (<= 0 c r 4)) > > > which I think works well for clarity, concision, and efficiency. > > Dan
Very nice observation; I like it. I've always felt the variable-arity of lisp was a cool feature. I switched to a struct for the arg, but the following works: (defpat (is-pos? (pos r c)) (<= 0 c r 4)) I probably won't keep my defpat macro, at least not in its present form (for one, it only handles a single arg); there's probably a balance between being concise and being general/flexible. I finished the program, but it's very raw - I haven't tried to match the Racket style, be idiomatic, etc., just rushed through it to get a rough idea of how it compares: https://gist.github.com/lojic/14aefacc29ab5a88fa98 I'll come back to it after I get some more experience and improve it. Despite the questionable utility of these exercises, I always run into something that causes me to learn something valuable about Racket. ____________________ Racket Users list: http://lists.racket-lang.org/users