[racket-dev] problem with require and frtime

From: Gregory Cooper (ghcooper at gmail.com)
Date: Thu Jan 19 11:42:27 EST 2012

I assume it wouldn't be too difficult, and that it's worth doing even if it
doesn't solve this particular problem.  Can someone grant me commit
privileges?

On Thu, Jan 19, 2012 at 5:18 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:

> (Just to be clear, that wouldn't solve the problem this time. The `='
> from `scheme' and `racket' are the same, but `frtime' has its own `='.)
>
> At Thu, 19 Jan 2012 08:19:59 -0500, Matthias Felleisen wrote:
> >
> > Greg, how difficult would it be to migrate frtime to #lang racket? --
> Matthias
> >
> >
> >
> > On Jan 19, 2012, at 8:13 AM, Matthew Flatt wrote:
> >
> > > The `frtime' language exports an `=' that isn't the same as `=' in
> > > `racket', so that's why the pattern doesn't match. (This seems like a
> > > further weakness of the `frtime' docs to specify the exports
> > > precisely.)
> > >
> > > You could avoid bound names like `=' as literals in the macro.
> > > Normally, it works best for a form-exporting macro to also export
> > > bindings for any literals in the form. Otherwise, this kind of
> > > confusion is common.
> > >
> > > Alternatively, you may want to match literals in your macro
> > > symbolically instead of by binding. You can't do that easily with
> > > `syntax-rules', but you can use `syntax-case*' and supply `(lambda (a
> > > b) (eq? (syntax-e a) (syntax-e b)))' as the literal-comparison
> > > function.
> > >
> > > If it were me and I decided to go in the direction of symbol equality,
> > > I'd use keywords instead --- `#:?' and `#:=' instead of `?' and `=' ---
> > > which makes clear that there's no question of binding.
> > >
> > >
> > > At Thu, 19 Jan 2012 10:46:37 +0100, Marijn wrote:
> > >> On 18-01-12 17:47, Matthew Flatt wrote:
> > >>> At Wed, 18 Jan 2012 12:02:10 +0100, Marijn wrote:
> > >>>> I would expect both forms to work. This is a reduction of a
> different
> > >>>> problem possibly caused by these issues here.
> > >>
> > >> So I tried to cut down my program to a reasonably sized test-case
> which
> > >> is attached to this email. model.rkt contains (what's left of) the
> model
> > >> macro, demo1.rkt contains a small model and a (require frtime). If you
> > >> do "racket demo1.rkt" then you get the following error:
> > >>
> > >>
> > >> model.rkt:30:17: make-entry: bad syntax in: (make-entry (= profit
> > >> (for/hash ((y years)) (values y (- (hash-ref income y 0) (hash-ref
> > >> expenses y 0))))) (years income expenses profit))
> > >>
> > >> === context ===
> > >> standard-module-name-resolver
> > >>
> > >>
> > >> but if you comment the (require frtime) then the error goes away. I
> have
> > >> other code that tests this same simple-economy model with the
> > >> non-cutdown version of the model macro and supporting code and
> > >> everything seems to work fine.
> > >>
> > >> Any idea what's going on here?
> > >>
> > >> Marijn
> > >>
> > >>
> >
> ------------------------------------------------------------------------------
> > >> [text/plain "demo1.rkt"] [~/Desktop & open] [~/Temp & open]
> > >>
> > >>
> >
> ------------------------------------------------------------------------------
> > >> [text/plain "model.rkt"] [~/Desktop & open] [~/Temp & open]
> > >>
> > >>
> >
> ------------------------------------------------------------------------------
> > >> [application/pgp-signature "signature.asc"] [~/Desktop & open]
> [~/Temp &
> > open]
> > > _________________________
> > >  Racket Developers list:
> > >  http://lists.racket-lang.org/dev
> _________________________
>  Racket Developers list:
>  http://lists.racket-lang.org/dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20120119/2fdefe16/attachment.html>

Posted on the dev mailing list.