I wonder if define-match-expander might be what you're looking for? http://docs.racket-lang.org/reference/match.html?q=define-match-expander#(form._((lib._racket/match..rkt)._define-match-expander))
Erik On Mar 9, 2012, at 8:22 PM, rob cook wrote: > Thanks for the tips - I am new to using match, the answers are illuminating, > and so close... > > I perhaps oversimplified my example. What I actually need to do is to match > on an arbitrary expression bound earlier., e.g. > > (match foo > (bar #t) > (_ #f)) > > Where bar is bound to some valid *match* expression. It appears the == fits > the bill for something that resolves to some literal value in the end. I need > to match what might be a literal, but could be something like bar being > (list (and (? number?) (? odd?)))). > > In other words, I'd like to be able to generate or have the user supply any > arbitrary match expression, and use it for the bar in the match shown above. > Ideas? > > Thx again, > Rob > > On Fri, Mar 9, 2012 at 4:37 PM, rob cook <heycar...@gmail.com> wrote: > That is, without using a macro or eval. Id like to do: > > (define a 4) > (define l1 '(1 2 3)) > (match l1 > (`(1 2 ,a) #t) > (_ #f)) > > So that this example would result in #f, and #t if a bound to 3. > > Since of course match has its own quasiquote behavior, this does not seem > possible w/o making a macro for "dynamic" match, or building the s-exp and > using eval (yuck!). > > Is this correct, or have I missed something obvious? > > Thnx > Rob > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users
____________________ Racket Users list: http://lists.racket-lang.org/users