[racket-dev] struct + match not interacting via a macro
Ya, that sounds much better
On Mon, Oct 10, 2011 at 7:19 AM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
> On Mon, Oct 10, 2011 at 8:38 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>>
>> You would have to expand to something that includes both the static
>> and runtime pieces:
>>
>> (begin (define-values ( ... ) ... )
>> (define-syntaxes ( ... ) ... ))
>>
>> But that's going to be difficult because ideally you'd just use the
>> static binding that define-struct sets up. One approach would be to
>> put the define-struct at the top-level but with altered names that you
>> control:
>
> Another approach that might work is to use the `#:omit-define-values'
> keyword with regular `racket/base' `define-struct':
>
> #lang racket
> (define (make-foo . args) args)
> (define foo? list?)
> (define (foo-x v) (car v))
> (define (foo-y v) (cadr v))
> (define-struct foo (x y) #:omit-define-values)
> (match (make-foo 1 2)
> [(struct foo (x y)) (+ x y)])
>
> --
> sam th
> samth at ccs.neu.edu
>
--
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay
"The glory of God is Intelligence" - D&C 93