Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Matthew Flatt
At Fri, 20 Jul 2012 16:33:54 -0400, Vincent St-Amour wrote:
> How about having a `compatibility' collect, which would include this and
> things like `racket/package' (compatibility with Chez) and `racket/mpair'
> (compatibility with Scheme)? It would be harder to confuse these things
> with blessed Racket features.

Sorry that I'm so late to this thread.

I think a "compatibility" collection is a good idea, and it's a fine
place for `defmacro'. I don't think `racket/...' libraries should move
there, though.

When the next big language shift comes, we should leave out some
libraries that are now in "racket", and then it may make sense to add
some left-out ones to "compatibility". As long as they stick around in
"racket" though (for compatibility!), I think there's little advantage
in adding them to "compatibility". 

FWIW, the `package' form wasn't even intended for compatibility. It was
intended to support namespace management --- possibly as an expansion
target for macros --- and to work in contexts other than module top
levels. It hasn't turned out to be useful, though.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Vincent St-Amour
At Mon, 30 Jul 2012 13:10:28 -0600,
Matthew Flatt wrote:
> 
> At Fri, 20 Jul 2012 16:33:54 -0400, Vincent St-Amour wrote:
> > How about having a `compatibility' collect, which would include this and
> > things like `racket/package' (compatibility with Chez) and `racket/mpair'
> > (compatibility with Scheme)? It would be harder to confuse these things
> > with blessed Racket features.
> 
> Sorry that I'm so late to this thread.
> 
> I think a "compatibility" collection is a good idea, and it's a fine
> place for `defmacro'. I don't think `racket/...' libraries should move
> there, though.
> 
> When the next big language shift comes, we should leave out some
> libraries that are now in "racket", and then it may make sense to add
> some left-out ones to "compatibility". As long as they stick around in
> "racket" though (for compatibility!), I think there's little advantage
> in adding them to "compatibility". 

The main advantage (IMO) of having, say, mutable lists in
`compatibility' is that searching the docs points there instead of to
`racket'. This makes it clear that they are not a blessed Racket
feature. This is (IMO) the main point of the `compatibility' collect.

> FWIW, the `package' form wasn't even intended for compatibility. It was
> intended to support namespace management --- possibly as an expansion
> target for macros --- and to work in contexts other than module top
> levels. It hasn't turned out to be useful, though.

Now that we have submodules, are packages still useful? If not, we
should encourage the use of submodules over packages, and putting
packages in `compatibility' makes it clear that they are not the
preferred option.

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Matthias Felleisen

On Jul 30, 2012, at 3:52 PM, Vincent St-Amour wrote:

> The main advantage (IMO) of having, say, mutable lists in
> `compatibility' is that searching the docs points there instead of to
> `racket'. This makes it clear that they are not a blessed Racket
> feature. This is (IMO) the main point of the `compatibility' collect.


I fully and enthusiastically agree with this perspective but I don't think this 
is high on our list of things to do. 

When we consider such moves, we should always consider the opportunity cost. 
What could I accomplish instead? 

Having said that, I would like to propose that we COPY files/subcollections 
from racket/ to compatibility/ (and keep them in sync) if we wish to indicate 
that they are not really rackety. 

-- Matthias


_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Matthew Flatt
At Mon, 30 Jul 2012 15:52:52 -0400, Vincent St-Amour wrote:
> The main advantage (IMO) of having, say, mutable lists in
> `compatibility' is that searching the docs points there instead of to
> `racket'. This makes it clear that they are not a blessed Racket
> feature. This is (IMO) the main point of the `compatibility' collect.

I agree that "compatibility" lets us add features that we don't really
like, but trying to shift existing bad ideas into "compatibility" seems
like a big detour (i.e., I'm agreeing with Matthias).


> Now that we have submodules, are packages still useful?

Submodules do not subsume packages; for example, `package' works in
definition contexts other than top-level modules. Whether packages are
still useful is maybe a moot point, since they don't seem to have been
ever useful. They were developed as an expansion target for an
implementation of ML, but even that implementation didn't use them in
the end.


At Mon, 30 Jul 2012 16:00:12 -0400, Matthias Felleisen wrote:
> I fully and enthusiastically agree with this perspective but I don't think 
> this 
> is high on our list of things to do. 
> 
> When we consider such moves, we should always consider the opportunity cost. 
> What could I accomplish instead? 
> 
> Having said that, I would like to propose that we COPY files/subcollections 
> from racket/ to compatibility/ (and keep them in sync) if we wish to indicate 
> that they are not really rackety. 

That's committed already, so I'm suggesting that we do more work to
un-commit the change. It's the spirit of avoiding more of the
kind of work that you suggest we avoid, though.

If we really want to have two names for these things --- the
compatibility name and the "compatibility" name --- then I think we
should at least consolidate to a single compatibility manual by moving
the documentation for `racket/mpair' and `racket/package' to the
compatibility manual.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Vincent St-Amour
At Mon, 30 Jul 2012 16:00:12 -0400,
Matthias Felleisen wrote:
> Having said that, I would like to propose that we COPY
> files/subcollections from racket/ to compatibility/ (and keep them in
> sync) if we wish to indicate that they are not really rackety.

Assuming you mean keeping the same interface re-providing bindings from
one to the other, as opposed to duplicating the implementation, then
that's what I did.

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-30 Thread Vincent St-Amour
At Mon, 30 Jul 2012 14:52:06 -0600,
Matthew Flatt wrote:
> At Mon, 30 Jul 2012 16:00:12 -0400, Matthias Felleisen wrote:
> > I fully and enthusiastically agree with this perspective but I don't think 
> > this 
> > is high on our list of things to do. 
> > 
> > When we consider such moves, we should always consider the opportunity 
> > cost. 
> > What could I accomplish instead? 
> > 
> > Having said that, I would like to propose that we COPY files/subcollections 
> > from racket/ to compatibility/ (and keep them in sync) if we wish to 
> > indicate 
> > that they are not really rackety. 
> 
> That's committed already, so I'm suggesting that we do more work to
> un-commit the change. It's the spirit of avoiding more of the
> kind of work that you suggest we avoid, though.
> 
> If we really want to have two names for these things --- the
> compatibility name and the "compatibility" name --- then I think we
> should at least consolidate to a single compatibility manual by moving
> the documentation for `racket/mpair' and `racket/package' to the
> compatibility manual.

To make sure I understand correctly, you're suggesting that:

- We keep the `compatibility' collect.
- We keep `compatibility/defmacro'.
- We remove `compatibility/mpair' and `compatibility/package', and move
  them back to `racket/mpair' and `racket/package', respectively.
- We leave the reference and the compatibility manual as is, with docs
  for `racket/mpair' and `racket/package' in the compatibility manual.

If that's what you're suggesting, I'll implement it.

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Matthias Felleisen

I meant literal file copies (or links if that works everywhere). And I think 
that would satisfy Matthew too. 
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Matthew Flatt
At Mon, 30 Jul 2012 19:45:07 -0400, Vincent St-Amour wrote:
> At Mon, 30 Jul 2012 14:52:06 -0600,
> Matthew Flatt wrote:
> > If we really want to have two names for these things --- the
> > compatibility name and the "compatibility" name --- then I think we
> > should at least consolidate to a single compatibility manual by moving
> > the documentation for `racket/mpair' and `racket/package' to the
> > compatibility manual.
> 
> To make sure I understand correctly, you're suggesting that:
> 
> - We keep the `compatibility' collect.
> - We keep `compatibility/defmacro'.
> - We remove `compatibility/mpair' and `compatibility/package', and move
>   them back to `racket/mpair' and `racket/package', respectively.
> - We leave the reference and the compatibility manual as is, with docs
>   for `racket/mpair' and `racket/package' in the compatibility manual.
> 
> If that's what you're suggesting, I'll implement it.

I'm sorry that I've been so unclear!

To start afresh, here are two suggestions, which are mutually
exclusive. The first is my preference:

 1. Revert the addition of `compatibility/package' and
`compatibility/mpair', including the documentation changes (but
maybe add back some text to discourage misuse of these libraries).

 2. Leave things as they are, but move the sections that document
`racket/package' and `racket/mpair' out of the Reference and into
the same "Compatibility" document that describes
`compatibility/package' and `compatibility/mpair'.

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Sam Tobin-Hochstadt
On Tue, Jul 31, 2012 at 6:42 AM, Matthew Flatt  wrote:
>
> To start afresh, here are two suggestions, which are mutually
> exclusive. The first is my preference:
>
>  1. Revert the addition of `compatibility/package' and
> `compatibility/mpair', including the documentation changes (but
> maybe add back some text to discourage misuse of these libraries).

I definitely think we should keep `mpair` as a more-than-compatibility
library.  It's useful in real data structures, and it's nice not to
have to roll your own mutable linked list when it's the right choice.
-- 
sam th
sa...@ccs.neu.edu
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Vincent St-Amour
At Tue, 31 Jul 2012 09:26:56 -0700,
Sam Tobin-Hochstadt wrote:
> 
> On Tue, Jul 31, 2012 at 6:42 AM, Matthew Flatt  wrote:
> >
> > To start afresh, here are two suggestions, which are mutually
> > exclusive. The first is my preference:
> >
> >  1. Revert the addition of `compatibility/package' and
> > `compatibility/mpair', including the documentation changes (but
> > maybe add back some text to discourage misuse of these libraries).
> 
> I definitely think we should keep `mpair` as a more-than-compatibility
> library.  It's useful in real data structures, and it's nice not to
> have to roll your own mutable linked list when it's the right choice.

Mutable pair functions are in `racket/base', I didn't touch these and am
not planning to. Mutable list functions, though, I moved. The name is
misleading.

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Vincent St-Amour
At Tue, 31 Jul 2012 07:42:53 -0600,
Matthew Flatt wrote:
> 
> At Mon, 30 Jul 2012 19:45:07 -0400, Vincent St-Amour wrote:
> > At Mon, 30 Jul 2012 14:52:06 -0600,
> > Matthew Flatt wrote:
> > > If we really want to have two names for these things --- the
> > > compatibility name and the "compatibility" name --- then I think we
> > > should at least consolidate to a single compatibility manual by moving
> > > the documentation for `racket/mpair' and `racket/package' to the
> > > compatibility manual.
> > 
> > To make sure I understand correctly, you're suggesting that:
> > 
> > - We keep the `compatibility' collect.
> > - We keep `compatibility/defmacro'.
> > - We remove `compatibility/mpair' and `compatibility/package', and move
> >   them back to `racket/mpair' and `racket/package', respectively.
> > - We leave the reference and the compatibility manual as is, with docs
> >   for `racket/mpair' and `racket/package' in the compatibility manual.
> > 
> > If that's what you're suggesting, I'll implement it.
> 
> I'm sorry that I've been so unclear!
> 
> To start afresh, here are two suggestions, which are mutually
> exclusive. The first is my preference:
> 
>  1. Revert the addition of `compatibility/package' and
> `compatibility/mpair', including the documentation changes (but
> maybe add back some text to discourage misuse of these libraries).
> 
>  2. Leave things as they are, but move the sections that document
> `racket/package' and `racket/mpair' out of the Reference and into
> the same "Compatibility" document that describes
> `compatibility/package' and `compatibility/mpair'.

I'll go with the second one. I think it makes it clearer that these
features are not Rackety.

Thanks for clarifying!

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Matthew Flatt
At Tue, 31 Jul 2012 14:08:16 -0400, Vincent St-Amour wrote:
> Mutable pair functions are in `racket/base', I didn't touch these and am
> not planning to. Mutable list functions, though, I moved. The name is
> misleading.

Should `compatibility/mpair' be `compatibility/mlist' (while
`racket/mpair' keeps the misleading name)?

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-07-31 Thread Vincent St-Amour
At Tue, 31 Jul 2012 13:04:40 -0600,
Matthew Flatt wrote:
> 
> At Tue, 31 Jul 2012 14:08:16 -0400, Vincent St-Amour wrote:
> > Mutable pair functions are in `racket/base', I didn't touch these and am
> > not planning to. Mutable list functions, though, I moved. The name is
> > misleading.
> 
> Should `compatibility/mpair' be `compatibility/mlist' (while
> `racket/mpair' keeps the misleading name)?

Good idea. I'll do that.

Vincent
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-08-01 Thread Eli Barzilay
Yesterday, Vincent St-Amour wrote:
> At Tue, 31 Jul 2012 07:42:53 -0600, Matthew Flatt wrote:
> > 
> >  1. Revert the addition of `compatibility/package' and
> > `compatibility/mpair', including the documentation changes (but
> > maybe add back some text to discourage misuse of these libraries).
> > 
> >  2. Leave things as they are, but move the sections that document
> > `racket/package' and `racket/mpair' out of the Reference and into
> > the same "Compatibility" document that describes
> > `compatibility/package' and `compatibility/mpair'.
> 
> I'll go with the second one. I think it makes it clearer that these
> features are not Rackety.

-1 for leaving `package' there -- as questionable as its utility might
be, I don't think that there was ever any use of it that fell under a
"compatibility" category.  (OTOH, I have at least one use of it that
is definitely not compatibility.)

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-08-01 Thread Robby Findler
I think the idea is that "compatibility" means "we are keeping this to
be backwards compatible with unknown code that is using it" (or at
least, that's one of the meanings).

Robby

On Wed, Aug 1, 2012 at 6:44 PM, Eli Barzilay  wrote:
> Yesterday, Vincent St-Amour wrote:
>> At Tue, 31 Jul 2012 07:42:53 -0600, Matthew Flatt wrote:
>> >
>> >  1. Revert the addition of `compatibility/package' and
>> > `compatibility/mpair', including the documentation changes (but
>> > maybe add back some text to discourage misuse of these libraries).
>> >
>> >  2. Leave things as they are, but move the sections that document
>> > `racket/package' and `racket/mpair' out of the Reference and into
>> > the same "Compatibility" document that describes
>> > `compatibility/package' and `compatibility/mpair'.
>>
>> I'll go with the second one. I think it makes it clearer that these
>> features are not Rackety.
>
> -1 for leaving `package' there -- as questionable as its utility might
> be, I don't think that there was ever any use of it that fell under a
> "compatibility" category.  (OTOH, I have at least one use of it that
> is definitely not compatibility.)
>
> --
>   ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
> http://barzilay.org/   Maze is Life!
> _
>   Racket Developers list:
>   http://lists.racket-lang.org/dev
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-08-01 Thread Eli Barzilay
20 minutes ago, Robby Findler wrote:
> I think the idea is that "compatibility" means "we are keeping this
> to be backwards compatible with unknown code that is using it" (or
> at least, that's one of the meanings).

Sounds like `scheme/nest' should be there too then.  But in any case,
what bugs me about putting `*/package' there is that there's no
substitute for it, so labeling it as such seems wrong.

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] `compatibility' (was: [plt] Push #25038: master branch updated)

2012-08-02 Thread Matthias Felleisen

backwards compatibility does not mean you must have a substitute. Your concerns 
should be registered however for future attempts to deprecate this feature -- 
if it is used. 


On Aug 1, 2012, at 8:18 PM, Eli Barzilay wrote:

> 20 minutes ago, Robby Findler wrote:
>> I think the idea is that "compatibility" means "we are keeping this
>> to be backwards compatible with unknown code that is using it" (or
>> at least, that's one of the meanings).
> 
> Sounds like `scheme/nest' should be there too then.  But in any case,
> what bugs me about putting `*/package' there is that there's no
> substitute for it, so labeling it as such seems wrong.
> 
> -- 
>  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
>http://barzilay.org/   Maze is Life!
> _
>  Racket Developers list:
>  http://lists.racket-lang.org/dev



smime.p7s
Description: S/MIME cryptographic signature
_
  Racket Developers list:
  http://lists.racket-lang.org/dev