[plt-scheme] Check syntax and macros

From: Jens Axel Soegaard (jensaxel at soegaard.net)
Date: Thu Oct 18 09:07:58 EDT 2007

Grant Rettke skrev:
> On 10/18/07, Jens Axel Soegaard <jensaxel at soegaard.net> wrote:
>> You need to provide a concrete example in order to get a reasonable
>> answer.
> 
> Understood. The macro is called 'property'; it creates properties in classes.
> 
> (require (lib "class.ss"))
> 
> (define service-call%
>   (class* object% ()
>     (property customer-name)
>     (property customer-id)
>     (property call-type-code)
>     (property date-of-call-string)
>     (super-new)))
> 
> (define-syntax property
>   (lambda (stx)
>     (define gen-id ; Source: _TSPL3rdEd_ by Kent Dybvig
>       (lambda (template-id . args)
>         (datum->syntax-object
>          template-id
>          (string->symbol
>           (apply
>            string-append
>            (map
>             (lambda (x)
>               (if (string? x) x
>                   (symbol->string (syntax-object->datum x))))
>             args))))))
>     (syntax-case stx ()
>       [(_ name)
>        (with-syntax
>            ([property-name (gen-id (syntax name) "field-" (syntax name))])
>          (syntax
>           (begin
>             (field (property-name null))
>             (define/public (name . args)
>               (if (null? args) property-name
>                   (set! property-name (car args)))))))])))

Which arrows were you expecting to appear after hitting
CheckSyntax on the above?

-- 
Jens Axel Søgaard



Posted on the users mailing list.