[plt-scheme] If With No Else and Other Changes

From: Doug Williams (m.douglas.williams at gmail.com)
Date: Fri Feb 1 10:15:29 EST 2008

I think V4 is a good step forward and I certainly welcome it.  I'm not that
worried about converting my code over to it.  What I am worried about is
that there doesn't seem to be a practical way, that I've seen, to maintain a
single PLaneT package that is compliant with both V4 and V3.  I certainly
don't see how I can make use many of the new V4 features in a PLaneT package
and retain that compatibility.


On Fri, Feb 1, 2008 at 3:53 AM, Dave Gurnell <d.j.gurnell at gmail.com> wrote:

> > What other constructs might bite us?
> Hi Doug,
> There are a lot of great improvements in PLT4, and on the whole the
> transition process is not too bad. However, there are a couple of
> areas in which I've had problems:
> I've been having lots of problems with keyword arguments. There is a
> fundamental difference in the way they work in the mzscheme and scheme/
> base languages, and there are issues that still need ironing out:
>   - the semantics of keyword arguments have changed: you can no
> longer pass arbitrary keywords to a procedure and ignore those you are
> not expecting (on the other hand, unrecognised keywords are found at
> compile time);
>   - AFAIK, modules in the mzscheme language cannot call keyword
> procedures in modules written in scheme/base;
>   - also AFAIK, modules in scheme/base cannot call keyword procedures
> in mzscheme modules;
>   - the new style contracts from scheme/contract work fine with old
> style lambdas and opt-lambdas, but they do not work with lambda/kws;
>   - class.ss currently does not work correctly with either keyword
> system (I've filed a bug report about this one too).
> There are also some differences between the structure subforms in
> provide and provide/contract. If you provide a structure using provide/
> contract, you cannot re-provide it using provide and struct-out. For
> example:
>   (module a scheme/base
>     (require scheme/contract)
>     (define-struct person (name) #:transparent)
>     (provide/contract (struct person ([name string?]))))
>   (module b scheme/base
>     (require (file "a.ss"))
>     (provide (struct-out person)))
> That's all I can think of for now.
> Cheers,
> -- Dave
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20080201/40f2f327/attachment.html>

Posted on the users mailing list.