I just found this, which has a lot of forms for just about everything I can think of (and more) that support things like match-patterns: https://github.com/stchang/generic-bind
I haven’t tried it yet, but It looks pretty amazing. It probably has everything you want. On Jul 13, 2014, at 12:41 AM, Alexander D. Knauth <alexan...@knauth.org> wrote: > > On Jul 12, 2014, at 10:17 PM, Alexander D. Knauth <alexan...@knauth.org> > wrote: > >> >> On Jul 12, 2014, at 6:43 PM, Brian Adkins <racketus...@lojic.com> wrote: >> >>> 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. >> >> Although define/match is definitely more powerful, if you want it, this >> would probably be a good version of what you want that would handle multiple >> arguments: (I’ll reply again if I get one to work with optional and/or >> keyword-arguments) >> (define-syntax defpat >> (syntax-rules () >> [(defpat (f arg-pat ...) body ...) >> (defpat f (match-lambda** [(arg-pat ...) body ...]))] >> [(defpat id expr) >> (define id expr)])) > > Ok I just made a version of defpat that can handle multiple arguments, > optional arguments, keyword-arguments, and optional keyword-arguments. > I also made a form called my-match-lambda that defpat uses to do this. > https://github.com/AlexKnauth/defpat > Also to do this I had to make it so that you have to use square brackets to > specify optional arguments, otherwise it couldn’t tell between an optional > argument and a match pattern. > ____________________ Racket Users list: http://lists.racket-lang.org/users