Re: [racket-dev] LLVM

2010-08-02 Thread Paul Steckler
On Tue, Aug 3, 2010 at 10:41 AM, Matthias Felleisen
 wrote:
> Eli and an undergraduate (Alex Friedman) started on this a few years ago
> and got reasonably far. They could compile a bunch of small stuff, and the
> LLVM developer was highly responsive to requests back then (still at UIUC).
> But Matthew's effort on jitting via gnu lightning was better and so the
> llvm project was abandoned.

Interesting; I wasn't aware of GNU lightning.

Does that mean that mzc currently targets lightning, or is that just used in
the JIT?

-- Paul
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] LLVM

2010-08-02 Thread Matthias Felleisen

On Aug 2, 2010, at 8:38 PM, Paul Steckler wrote:

> I may have missed a post on this topic, but has anyone built an LLVM back-end
> for mzc?

Eli and an undergraduate (Alex Friedman) started on this a few years ago
and got reasonably far. They could compile a bunch of small stuff, and the
LLVM developer was highly responsive to requests back then (still at UIUC). 
But Matthew's effort on jitting via gnu lightning was better and so the 
llvm project was abandoned. 

-- Matthias

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] LLVM

2010-08-02 Thread Paul Steckler
I may have missed a post on this topic, but has anyone built an LLVM back-end
for mzc?

-- Paul
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] status of the new `racket/gui'

2010-08-02 Thread Matthew Flatt
At Mon, 2 Aug 2010 19:12:40 -0400, Sam Tobin-Hochstadt wrote:
> On Mon, Aug 2, 2010 at 7:08 PM, Matthew Flatt  wrote:
> >  One question: the open/save file
> >> dialogs on Gtk are using the old GRacket dialogs, rather than the
> >> Gtk-native ones.  Is this planned to change in the future?
> >
> > Yes, I just haven't gotten to the file dialog, yet.
> 
> Great!  If there are dialogs like this that need filling in, I bet you
> could get volunteers on this list.  I'd be happy to help with Gtk.

Back-ends for `get-file', `get-file-list', `put-file', and
`get-directory' would be welcome.

The implementations would go in "collects/mred/private/wx/gtk" or
"collects/mred/private/wx/cocoa". All of those dialogs currently go to
the back-end function `file-selector', which is defined as a stub in
"procs.rkt". You'd have to infer the API for `file-selector' by looking
at "collects/mred/private/filedialog". I have no objecting to changing
the API --- especially throwing out the marshaling of file-extension
mappings into a string.

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] status of the new `racket/gui'

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 7:08 PM, Matthew Flatt  wrote:
>  One question: the open/save file
>> dialogs on Gtk are using the old GRacket dialogs, rather than the
>> Gtk-native ones.  Is this planned to change in the future?
>
> Yes, I just haven't gotten to the file dialog, yet.

Great!  If there are dialogs like this that need filling in, I bet you
could get volunteers on this list.  I'd be happy to help with Gtk.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] status of the new `racket/gui'

2010-08-02 Thread Matthew Flatt
At Mon, 2 Aug 2010 17:51:11 -0400, Sam Tobin-Hochstadt wrote:
> On Mon, Aug 2, 2010 at 1:09 PM, Matthew Flatt  wrote:
> > The `racket/gui' re-implementation is starting to come into focus.
> > DrRacket mostly works, although lots and lots of problems remain.
> 
> It looks very nice on my machine.  One question: the open/save file
> dialogs on Gtk are using the old GRacket dialogs, rather than the
> Gtk-native ones.  Is this planned to change in the future?

Yes, I just haven't gotten to the file dialog, yet.

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] status of the new `racket/gui'

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 1:09 PM, Matthew Flatt  wrote:
> The `racket/gui' re-implementation is starting to come into focus.
> DrRacket mostly works, although lots and lots of problems remain.

It looks very nice on my machine.  One question: the open/save file
dialogs on Gtk are using the old GRacket dialogs, rather than the
Gtk-native ones.  Is this planned to change in the future?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and ADTs

2010-08-02 Thread Matthias Felleisen

Pardon me for mentioning ML. Yes, Jim Morris suggested ADTs without using the 
name and the Clu people in their paper on infinitely high-level languages 
(yeap!) introduced the terms. That doesn't change a thing about the content of 
my statement. 



On Aug 2, 2010, at 11:38 AM, Shriram Krishnamurthi wrote:

> ADTs have nothing to do with ML.  They're an older and basic computer
> science concept.
> 
> So why do you have an opaque require?  Just on simple duality grounds
> you should have both or neither.
> 
> Shriram

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Matthias Felleisen

The problem isn't that you can't contract base values, the problem
is that they are checked when the values crosses the boundary and
that's that. It's too eager. 

Matthew added chaperons a while back and we will use those to 
change the world. Perhaps. 



On Aug 2, 2010, at 1:18 PM, Shriram Krishnamurthi wrote:

> Arjun just pointed out to me that the inability to contract base
> values can lead to much harder-to-understand problems in higher-order
> contexts.  (Not surprising, but I hadn't thought that that would make
> it much worse.)
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Jay McCarthy
We should try to make sure that only commit messages from commits in
the release branch are considered for the release notes process. Do we
a script that does it or does someone pick through them manually?

Jay

On Mon, Aug 2, 2010 at 1:14 PM, Robby Findler
 wrote:
> Eli: are you saying that those commits were not included in the
> testing bundles? If so, why do we need to re-run the release tests?
> (Or is there something else?)
>
> Robby
>
> On Mon, Aug 2, 2010 at 2:12 PM, Eli Barzilay  wrote:
>> On Aug  2, Jay McCarthy wrote:
>>> On Mon, Aug 2, 2010 at 4:31 AM, Eli Barzilay  wrote:
>>> > On Aug  2, Matthias Felleisen wrote:
>>> >> On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:
>>> >>
>>> >> > And for the (near) future -- figure out what's happenning in the
>>> >> >  teaching languages.  I get the impression that things are moving
>>> >> >  there almost randomly.
>>> >>
>>> >> No, this isn't random; it is unsynchronized:
>>> >
>>> > (Yeah, I used "random" in a random sense...)
>>> >
>>> >>  -- Shriram asked Jay to add define-datatype
>>> >
>>> > (and hashes? was there more?)
>>>
>>> define-datatype, match, hashes
>>>
>>> These are the commits:
>>>
>>> http://github.com/plt/racket/commit/407dcee206678785b4b87bb513d7ba5f55ad8ab5
>>>
>>> http://github.com/plt/racket/commit/eeada45868d73c02b59f5c1ecd16e414d5a114ac
>>>
>>> http://github.com/plt/racket/commit/9eb053d4db1efd2881e1f749ad6b1eb12a6e8152
>>
>> (For future references, the sha1 is all that is needed.)
>>
>> None of these commits are included.  This leaves the last mess:
>> running proper tests.
>>
>> --
>>          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
>>                    http://barzilay.org/                   Maze is Life!
>> _
>>  For list-related administrative tasks:
>>  http://lists.racket-lang.org/listinfo/dev
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

"The glory of God is Intelligence" - D&C 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Robby Findler
Eli: are you saying that those commits were not included in the
testing bundles? If so, why do we need to re-run the release tests?
(Or is there something else?)

Robby

On Mon, Aug 2, 2010 at 2:12 PM, Eli Barzilay  wrote:
> On Aug  2, Jay McCarthy wrote:
>> On Mon, Aug 2, 2010 at 4:31 AM, Eli Barzilay  wrote:
>> > On Aug  2, Matthias Felleisen wrote:
>> >> On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:
>> >>
>> >> > And for the (near) future -- figure out what's happenning in the
>> >> >  teaching languages.  I get the impression that things are moving
>> >> >  there almost randomly.
>> >>
>> >> No, this isn't random; it is unsynchronized:
>> >
>> > (Yeah, I used "random" in a random sense...)
>> >
>> >>  -- Shriram asked Jay to add define-datatype
>> >
>> > (and hashes? was there more?)
>>
>> define-datatype, match, hashes
>>
>> These are the commits:
>>
>> http://github.com/plt/racket/commit/407dcee206678785b4b87bb513d7ba5f55ad8ab5
>>
>> http://github.com/plt/racket/commit/eeada45868d73c02b59f5c1ecd16e414d5a114ac
>>
>> http://github.com/plt/racket/commit/9eb053d4db1efd2881e1f749ad6b1eb12a6e8152
>
> (For future references, the sha1 is all that is needed.)
>
> None of these commits are included.  This leaves the last mess:
> running proper tests.
>
> --
>          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
>                    http://barzilay.org/                   Maze is Life!
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Eli Barzilay
On Aug  2, Jay McCarthy wrote:
> On Mon, Aug 2, 2010 at 4:31 AM, Eli Barzilay  wrote:
> > On Aug  2, Matthias Felleisen wrote:
> >> On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:
> >>
> >> > And for the (near) future -- figure out what's happenning in the
> >> >  teaching languages.  I get the impression that things are moving
> >> >  there almost randomly.
> >>
> >> No, this isn't random; it is unsynchronized:
> >
> > (Yeah, I used "random" in a random sense...)
> >
> >>  -- Shriram asked Jay to add define-datatype
> >
> > (and hashes? was there more?)
> 
> define-datatype, match, hashes
> 
> These are the commits:
> 
> http://github.com/plt/racket/commit/407dcee206678785b4b87bb513d7ba5f55ad8ab5
> 
> http://github.com/plt/racket/commit/eeada45868d73c02b59f5c1ecd16e414d5a114ac
> 
> http://github.com/plt/racket/commit/9eb053d4db1efd2881e1f749ad6b1eb12a6e8152

(For future references, the sha1 is all that is needed.)

None of these commits are included.  This leaves the last mess:
running proper tests.

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Typed Racket and ADTs

2010-08-02 Thread Shriram Krishnamurthi
Why not provide the flip?  You're already willing to wrap things (in
contracts).  Couldn't you do the wrapping that I have to do by hand?
(Maybe I'm missing something.)  It would make the language more
symmetric, and the result of this symmetry would be not only symmetry
but an actual nameable virtue (ADTs).  [To repeat: maybe I'm missing
something.]

Shriram

On Mon, Aug 2, 2010 at 11:51 AM, Sam Tobin-Hochstadt  wrote:
> On Mon, Aug 2, 2010 at 11:38 AM, Shriram Krishnamurthi  
> wrote:
>> So why do you have an opaque require?
>
> The opaque form of `require/typed' is to allow requiring operations on
> an ADT for which only a predicate is known. It supports using
> `require/typed' with ADTs defined in exactly the way Matthias
> suggests. For example, if there was no built-in `String' type, then
> the opaque form of `require/typed' would be the way to specify it.
> --
> sam th
> sa...@ccs.neu.edu
>
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Shriram Krishnamurthi
Arjun just pointed out to me that the inability to contract base
values can lead to much harder-to-understand problems in higher-order
contexts.  (Not surprising, but I hadn't thought that that would make
it much worse.)

On Mon, Aug 2, 2010 at 11:44 AM, Sam Tobin-Hochstadt  wrote:
> On Mon, Aug 2, 2010 at 11:14 AM, Shriram Krishnamurthi  
> wrote:
>>
>> Okay, so here's another scenario.  This time, TR will NOT just pass
>> the value through, as it did map.
>>
>>  a.rkt
>> #lang racket
>>
>> (define foo 4)
>> (provide foo)
>> ;; NOTE: a has not done a good job of "protecting" foo,
>> ;; whatever the heck that means
>>  b.rkt
>> #lang typed/racket
>>
>> (require/typed "a.rkt" [foo Number])
>> (provide foo)
>> ;; Now I'm going to put an explicit TYPE on foo
>>  c.rkt
>> #lang racket
>>
>> (require "b.rkt")
>> (string-length foo)
>> --
>>
>> The error message is
>>
>>  string-length: expects argument of type ; given 4
>>
>> Nothing that looks like a contract violation.
>>
>> I was willing to live with your previous explanation re. map (whether
>> or not it was primitive, the idea that something just passed through).
>> But the idea that the typed intermediation above seems to do nothing
>> is much harder to defend on similar grounds.
>
> I think this (and your second example, which is the same)  presents an
> interesting issue with contracts.  It's not peculiar to types:
>
> #lang racket/load
>
> (module m racket
>  (define foo 4) (provide/contract [foo number?]))
> (module n racket
>  (require 'm) (string-length foo))
>
> Again, no contract error. Right now, this isn't treated as an abuse of
> the protected value `4', but as an abuse of `string-length'.  Whether
> primitive values should treat function calls on them as "message
> sends" and thus be able to respond, potentially with contract errors,
> is a really interesting question.  This relates to Cormac's ideas
> about proxies for primitive values [1].
>
> [1] http://wiki.ecmascript.org/doku.php?id=harmony:proxies at the
> bottom of the page
> --
> sam th
> sa...@ccs.neu.edu
>
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] status of the new `racket/gui'

2010-08-02 Thread Matthew Flatt
The `racket/gui' re-implementation is starting to come into focus.
DrRacket mostly works, although lots and lots of problems remain.

The code is still hosted here:

 http://github.com/mflatt/gr2

The GUI libraries do not work well enough that it's time to submit bug
reports, but DrRacket works well enough that you could try to run it as
a preview. If GRacket or DRacket fails to start up due to issues
finding/loading Gtk or related libraries, please let me know.

The drawing part of the toolbox is in good shape, and bug reports on
that part are welcome. Slideshow programs should run well; let me know
if you have an example that renders incorrectly.

See below for a list of changes to the drawing library compared to
v5.0.x, so far. We'll eventually add support for gradients.


Currently supported platforms:

 * Unix variants using Gtk (32 and 64 bits)
 * Windows (32 bits)
 * Mac OS X (32 and 64 bits; use --enable-mac64 to build the latter)



 * The drawing portion of the old GUI toolbox is now available as a
   separate layer: `racket/draw'. This layer can be used from plain
   Racket independent of the `racket/gui' library, although
   `racket/gui' re-exports `racket/draw'.

   The `racket/draw' library is built on top of the widely used Cairo
   drawing library and Pango text-rendering library.

 * A color bitmap can have an alpha channel, instead of just a mask
   bitmap. When drawing a bitmap, alpha channels are used more
   consistently and automatically than mask bitmaps. More
   significantly, drawing into a bitmap with an alpha channel
   preserves the drawn alphas; for example, drawing a line in the
   middle of an empty bitmap produces an image with non-zero alpha
   only at the drawn line.

   Create a bitmap with an alpha channel by supplying #t as the new
   `alpha?' argument to the `bitmap%' constructor, or by loading an
   image with a type like 'unknown/alpha insteda of 'unknown or
   'unknown/mask.

   A newly created `bitmap%' has an empty content (i.e., white with
   zero alpha), insteda of unspecified content.

   Images can be read into a `bitmap%' from from input ports, instead
   of requiring a file path.

 * A `dc<%>' supports additional drawing transformations: a rotation
   (via `set-rotation') and a general transformation matrix (via
   `set-initial-matrix'). Scaling factors can be negative, which
   corresponds to flipping the direction of drawing.

   A transformation matrix has the form `(vector xx xy yx yy x0 y0)',
   where a point (x1, y1) is transformed to a point (x2, y2) with x2 =
   xx*x1 + yx*y1 + x0 and y2 = xy*x1 + yy*y1 + y0, which is the usual
   convention.

   New methods `translate', `scale', `rotate', and `transform'
   simplify adding a further translation, scaling, rotation, or
   arbitrary matrix transformation on top of the current
   transformation. The new `get-translation' and `set-translation'
   methods help to capture and restore transformation settings.

   The old translation and scaling transformations apply after the
   initial matrix. The new rotation transformation applies after the
   other transformations. This layering is redundant, since all
   transformations can be expressed in a single matrix, but it is
   backward-compatibile. Methods like `get-translation',
   `set-translation', `scale', etc. help hide the reundancy.

   The alpha value of a `dc<%>' (as set by `set-alpha') is used for
   all drawing operations, including drawing a bitmap.

   The `draw-bitmap' and `draw-bitmap-section' methods now smooth
   bitmaps while scaling, so the `draw-bitmap-section-smooth' method
   of `bitmap-dc%' simply calls `draw-bitmap-section'.

 * A `region%' can be created as independent of any `dc<%>', in which
   cases it uses the drawing context's current transformation at the
   time that it is installed as a clipping region.

 * The old 'xor mode for pens and brushes is no longer available
   (since it is not supported by Cairo).

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 11:46 AM, Shriram Krishnamurthi  
wrote:
> Yep, I figured this is where you'd go with this.  So if I converted
> everything to functions, I'd get just the behavior I want?

I'm not certain of the behavior you want, but I think so.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and ADTs

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 11:38 AM, Shriram Krishnamurthi  
wrote:
> So why do you have an opaque require?

The opaque form of `require/typed' is to allow requiring operations on
an ADT for which only a predicate is known. It supports using
`require/typed' with ADTs defined in exactly the way Matthias
suggests. For example, if there was no built-in `String' type, then
the opaque form of `require/typed' would be the way to specify it.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Shriram Krishnamurthi
Yep, I figured this is where you'd go with this.  So if I converted
everything to functions, I'd get just the behavior I want?
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 11:14 AM, Shriram Krishnamurthi  
wrote:
>
> Okay, so here's another scenario.  This time, TR will NOT just pass
> the value through, as it did map.
>
>  a.rkt
> #lang racket
>
> (define foo 4)
> (provide foo)
> ;; NOTE: a has not done a good job of "protecting" foo,
> ;; whatever the heck that means
>  b.rkt
> #lang typed/racket
>
> (require/typed "a.rkt" [foo Number])
> (provide foo)
> ;; Now I'm going to put an explicit TYPE on foo
>  c.rkt
> #lang racket
>
> (require "b.rkt")
> (string-length foo)
> --
>
> The error message is
>
>  string-length: expects argument of type ; given 4
>
> Nothing that looks like a contract violation.
>
> I was willing to live with your previous explanation re. map (whether
> or not it was primitive, the idea that something just passed through).
> But the idea that the typed intermediation above seems to do nothing
> is much harder to defend on similar grounds.

I think this (and your second example, which is the same)  presents an
interesting issue with contracts.  It's not peculiar to types:

#lang racket/load

(module m racket
  (define foo 4) (provide/contract [foo number?]))
(module n racket
  (require 'm) (string-length foo))

Again, no contract error. Right now, this isn't treated as an abuse of
the protected value `4', but as an abuse of `string-length'.  Whether
primitive values should treat function calls on them as "message
sends" and thus be able to respond, potentially with contract errors,
is a really interesting question.  This relates to Cormac's ideas
about proxies for primitive values [1].

[1] http://wiki.ecmascript.org/doku.php?id=harmony:proxies at the
bottom of the page
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and ADTs

2010-08-02 Thread Shriram Krishnamurthi
ADTs have nothing to do with ML.  They're an older and basic computer
science concept.

So why do you have an opaque require?  Just on simple duality grounds
you should have both or neither.

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 11:07 AM, Matthias Felleisen
 wrote:
>
>
> Now, you will say but TR wraps only defined identifiers. I think that is a 
> SUBTLE and INTENSIONAL difference that in principle, a client such as C 
> shouldn't even see. Modules are not supposed to be inspected for who defines 
> what and so on. They are supposed to be service providers will well-defined 
> interfaces.



> Your interface says that all provided identifiers went thru typing and went 
> thru a typed provide interface.

I don't believe that there are any extensional observations that can
be made to distinguish these.  `eq?' is a special case, here as in
many other places.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Shriram Krishnamurthi
This is related to the other thread, on eq?.  I'll follow-up here.

>> That's beside the point.  map has just as much a polymorphic type as
>> insert.  You said earlier, "it shouldn't work to use `insert' in an
>> untyped context, since there's no way to generate a contract for its
>> type".  Why does this statement not apply to map?
>
> No contract is needed for `map' at all - it (like all Racket
> primitives) is known to protect itself.

I think this is a bad explanation.  What you said in your other thread
makes more sense -- TR passes through things and assumes that they
protect themselves:

  Other modules protect their own code.

The fact that map is a primitive does not strike me as relevant here.

Okay, so here's another scenario.  This time, TR will NOT just pass
the value through, as it did map.

 a.rkt
#lang racket

(define foo 4)
(provide foo)
;; NOTE: a has not done a good job of "protecting" foo,
;; whatever the heck that means
 b.rkt
#lang typed/racket

(require/typed "a.rkt" [foo Number])
(provide foo)
;; Now I'm going to put an explicit TYPE on foo
 c.rkt
#lang racket

(require "b.rkt")
(string-length foo)
--

The error message is

  string-length: expects argument of type ; given 4

Nothing that looks like a contract violation.

I was willing to live with your previous explanation re. map (whether
or not it was primitive, the idea that something just passed through).
But the idea that the typed intermediation above seems to do nothing
is much harder to defend on similar grounds.

In fact, let's go a step farther, since apparently what matters is
whether something is defined in the module.  Here is an alternate
version of b.rkt:

 b.rkt
#lang typed/racket

#lang typed/racket

(require/typed "a.rkt" [foo Number])
(: my-foo Number)
(define my-foo foo)
(provide my-foo)
 c.rkt
#lang racket

(require "b.rkt")
(string-length my-foo)
--

and I get the same run-time error.

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Matthias Felleisen

On Aug 2, 2010, at 10:53 AM, Sam Tobin-Hochstadt wrote:

> On Mon, Aug 2, 2010 at 10:36 AM, Matthias Felleisen
>  wrote:
>> 
>> Sam, this is an interesting question and you should look into it because the 
>> answer isn't obvious:
>> 
>>  (module A typed/racket (provide map))
>> 
>> passes map from 'somewhere' through A to two contexts: typed and untyped 
>> modules. Given that all provides slap on contracts in TR -- that's what the 
>> manual says or should say -- it is surprising that this map should ever be 
>> the same as the map that came from 'somewhere'.
> 
> The identifier you get for `map' outside this module is the same
> identifier you would have from `racket'.  `provide' adds contracts for
> identifiers *defined in this module* (including those defined by
> `require/typed').  Other modules protect their own code.
> 
>> It certainly wouldn't be the case in a contract world.
> 
> Can you make this more precise?


Let's say 'provide' is a macro in a language L that is specified to add 
contracts to all names specified, say, 

  (provide/L x) == (provide/contract [x (lambda (x) false)])
  ; silly, I know

When A exports x to B, written in L, and C imports x from B, you get blame for 
B. 

> 
> (module A racket 
>   (provide/contract [x integer?])
>   (define x 10))
> 
> (module B racket
>   (require 'A)
>   (provide/contract [x (lambda (x) false)]))
> 
> (module C racket 
>   (require 'B)
>   (printf "~s\n" x))
> 
> (require 'C)

;;  

Now, you will say but TR wraps only defined identifiers. I think that is a 
SUBTLE and INTENSIONAL difference that in principle, a client such as C 
shouldn't even see. Modules are not supposed to be inspected for who defines 
what and so on. They are supposed to be service providers will well-defined 
interfaces. 


Your interface says that all provided identifiers went thru typing and went 
thru a typed provide interface. 



_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket interaction

2010-08-02 Thread Shriram Krishnamurthi
Yes, sorry, I pasted the same thing twice.  Matthias caught it.
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 10:36 AM, Matthias Felleisen
 wrote:
>
> Sam, this is an interesting question and you should look into it because the 
> answer isn't obvious:
>
>  (module A typed/racket (provide map))
>
> passes map from 'somewhere' through A to two contexts: typed and untyped 
> modules. Given that all provides slap on contracts in TR -- that's what the 
> manual says or should say -- it is surprising that this map should ever be 
> the same as the map that came from 'somewhere'.

The identifier you get for `map' outside this module is the same
identifier you would have from `racket'.  `provide' adds contracts for
identifiers *defined in this module* (including those defined by
`require/typed').  Other modules protect their own code.

> It certainly wouldn't be the case in a contract world.

Can you make this more precise?

-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 9:58 AM, Shriram Krishnamurthi  wrote:
>>> 1'. That seems unlikely given that if I instead add "insert" to the
>>> above (#lang racket) source file and run Check Syntax, I get the same
>>> error -- so it is indeed a static error.   (Well, maybe not "static",
>>> there are probably three or four "times" at work here.)
>>
>> This is a different issue - it shouldn't work to use `insert' in an
>> untyped context, since there's no way to generate a contract for its
>> type.   This is also what's happening with the REPL, but that shouldn't
>> be treated as a untyped context (that's the bug).

Sorry, I misread your initial question, and thought something else was
happening.  The bug I was referring to is irrelevant here.

The reason that you don't get an error until you use `insert' is that
the error is only detected when you *use* `insert', not when it's
defined.  This is intentional - otherwise, typed modules would be much
less useful from the untyped side.  It's just as safe, since the error
is still at expansion time.

>>> 2. Why does the same not happen with map?   I can use map freely; if I
>>> put it in the #lang racket file and Check Syntax, it draws an arrow
>>> from map to the required (typed) file.   Yet in the typed file:
>>
>> `insert' is defined in typed code, and `map' is not.
>
> Depends on how you want to define the term.  I imported a language
> with map and explicitly provided it.

I mean "defined" in the sense of where the original `define-values' form is.

>  BUT:
>
> That's beside the point.  map has just as much a polymorphic type as
> insert.  You said earlier, "it shouldn't work to use `insert' in an
> untyped context, since there's no way to generate a contract for its
> type".  Why does this statement not apply to map?

No contract is needed for `map' at all - it (like all Racket
primitives) is known to protect itself.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket interaction

2010-08-02 Thread Matthias Felleisen

On Aug 2, 2010, at 10:43 AM, Sam Tobin-Hochstadt wrote:

> This is the same code as above.  Did you mean something different?

See my message. I had fixed it. Cap t in first line! 
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket interaction

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 9:37 AM, Shriram Krishnamurthi  wrote:
> Here is a sequence of steps to do something that seems extremely
> simple.  I want to create a binary tree of T.
>
> First, I have no idea what this documentation means:
>
> (struct:n (t ...))
> is the type of structures named n with field types t.
>
> All of "struct", "n" and "t" are italicized, suggesting they're all
> meta-variables.  But only "n" and "t" are explained in the document.
> Perhaps "struct:" is meant literally?

This documentation is written confusingly, I'll fix that.

> The next few things I do fail miserably, until I get this far:
>
> (define-struct: (T) Node ([v : T] [l : (BinTreeof t)] [r : (BinTreeof t)]))
> (define-type (BinTreeof t)
>  (U 'empty
>     [Node t]))
>
> Now we get a classic impenetrable error message:
>
>  Type Checker: Structure type constructor Node applied to non-regular
>  arguments (Error) in: (Node t)
>
> Whatever that means.  I rename the two "t"'s in Node to "T"'s:
>
> (define-struct: (T) Node ([v : T] [l : (BinTreeof t)] [r : (BinTreeof t)]))
> (define-type (BinTreeof t)
>  (U 'empty
>     [Node t]))

This is the same code as above.  Did you mean something different?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Matthias Felleisen

Sam, this is an interesting question and you should look into it because the 
answer isn't obvious: 

  (module A typed/racket (provide map))

passes map from 'somewhere' through A to two contexts: typed and untyped 
modules. Given that all provides slap on contracts in TR -- that's what the 
manual says or should say -- it is surprising that this map should ever be the 
same as the map that came from 'somewhere'.  It certainly wouldn't be the case 
in a contract world. 




_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and ADTs

2010-08-02 Thread Matthias Felleisen

On Aug 2, 2010, at 9:39 AM, Shriram Krishnamurthi wrote:

> 1. doesn't have a counterpart for *untyped* code;
...
> Overall, the status of representation-hiding in Typed Racket seems rather 
> weird.  


These two lines together explain it all. TR is about moving code from the 
untyped world into the typed world. It's not about ML with parentheses. 


> I find it odd that even programming entirely in Typed Racket, representations 
> leak by default.


Yeap, just like Racket. If you want to hide things, use opaque structs, then 
type them. 

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket interaction

2010-08-02 Thread Matthias Felleisen

This sounds like material for a bug report. I think the lowercase t in 

On Aug 2, 2010, at 9:37 AM, Shriram Krishnamurthi wrote:

> (define-struct: (T) Node ([v : T] [l : (BinTreeof t)] [r : (BinTreeof t)]))
> (define-type (BinTreeof t)
>  (U 'empty
> [Node t]))


the first line should be an unbound variable and reported as such. 
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Shriram Krishnamurthi
I'm not talking about behavior, I'm talking about the intended
semantics of observations in the language.

Shriram

On Mon, Aug 2, 2010 at 9:47 AM, Sam Tobin-Hochstadt  wrote:
> On Mon, Aug 2, 2010 at 9:40 AM, Shriram Krishnamurthi  
> wrote:
>> If I export map (w/out change to type) from typed/racket and eq? it
>> against the map from racket, the two are eq?.  This feels like a
>> violation of abstraction: typed map is a "different thing" from
>> untyped map.
>
> TR doesn't put additional contracts on the implementation of Racket
> primitives, since they already come with error-checking.  I'm not sure
> what you would want the difference in behavior to be between the two
> versions of `map'.
> --
> sam th
> sa...@ccs.neu.edu
>
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Shriram Krishnamurthi
I'm glad this is considered a bug.

>> 1'. That seems unlikely given that if I instead add "insert" to the
>> above (#lang racket) source file and run Check Syntax, I get the same
>> error -- so it is indeed a static error.  (Well, maybe not "static",
>> there are probably three or four "times" at work here.)
>
> This is a different issue - it shouldn't work to use `insert' in an
> untyped context, since there's no way to generate a contract for its
> type.  This is also what's happening with the REPL, but that shouldn't
> be treated as a untyped context (that's the bug).

I don't understand why this is a "different issue".  The Check Syntax
behavior looks just right to me.  I don't see an "issue" at all.

Did you mean that the REPL *should* (not "shouldn't") be treated as an
untyped context?

>> 2. Why does the same not happen with map?  I can use map freely; if I
>> put it in the #lang racket file and Check Syntax, it draws an arrow
>> from map to the required (typed) file.  Yet in the typed file:
>
> `insert' is defined in typed code, and `map' is not.

Depends on how you want to define the term.  I imported a language
with map and explicitly provided it.  BUT:

That's beside the point.  map has just as much a polymorphic type as
insert.  You said earlier, "it shouldn't work to use `insert' in an
untyped context, since there's no way to generate a contract for its
type".  Why does this statement not apply to map?

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 9:42 AM, Shriram Krishnamurthi  wrote:
> Here's a typed module:
>
> (module A typed/racket (provide insert map) (define insert cons))
>
> Here are two clients, which behave inconsistently:
>
>> (module B racket (require 'A) insert)
> . Type Checker: The type of insert cannot be converted to a contract in: 
> insert
>> (module C racket (require 'A) map)
>
> Let's instead save A to a file, and write these clients as:
>
> -
>
> #lang racket
> (require "typed-set-impl.rkt")
>
> -
>
> F5 executes fine.  Running works:
>
>> (map + '(1 2 3) '(4 5 6))
> '(5 7 9)
>
> But if I now type at the REPL:
>
>> insert
>
> I get the same error:
>
> Type Checker: The type of insert cannot be converted to a contract in: insert
>
> I have two issues with this:
>
> 1. Why is this discovered only when I "touch" insert and not sooner?
> Is there some kind of lazy contract creation happening at run-time?

This is because of strange interaction between the implementation of
the "Module" language and the implementation of Typed Scheme.  There's
been discussion of how to extend the DrRacket API to fix this bug, but
nothing has come of it yet.

> 1'. That seems unlikely given that if I instead add "insert" to the
> above (#lang racket) source file and run Check Syntax, I get the same
> error -- so it is indeed a static error.  (Well, maybe not "static",
> there are probably three or four "times" at work here.)

This is a different issue - it shouldn't work to use `insert' in an
untyped context, since there's no way to generate a contract for its
type.  This is also what's happening with the REPL, but that shouldn't
be treated as a untyped context (that's the bug).

> 2. Why does the same not happen with map?  I can use map freely; if I
> put it in the #lang racket file and Check Syntax, it draws an arrow
> from map to the required (typed) file.  Yet in the typed file:

`insert' is defined in typed code, and `map' is not.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Typed Racket and eq?

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 9:40 AM, Shriram Krishnamurthi  wrote:
> If I export map (w/out change to type) from typed/racket and eq? it
> against the map from racket, the two are eq?.  This feels like a
> violation of abstraction: typed map is a "different thing" from
> untyped map.

TR doesn't put additional contracts on the implementation of Racket
primitives, since they already come with error-checking.  I'm not sure
what you would want the difference in behavior to be between the two
versions of `map'.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Typed Racket and importing polymorphic code

2010-08-02 Thread Shriram Krishnamurthi
Here's a typed module:

(module A typed/racket (provide insert map) (define insert cons))

Here are two clients, which behave inconsistently:

> (module B racket (require 'A) insert)
. Type Checker: The type of insert cannot be converted to a contract in: insert
> (module C racket (require 'A) map)

Let's instead save A to a file, and write these clients as:

-

#lang racket
(require "typed-set-impl.rkt")

-

F5 executes fine.  Running works:

> (map + '(1 2 3) '(4 5 6))
'(5 7 9)

But if I now type at the REPL:

> insert

I get the same error:

Type Checker: The type of insert cannot be converted to a contract in: insert

I have two issues with this:

1. Why is this discovered only when I "touch" insert and not sooner?
Is there some kind of lazy contract creation happening at run-time?

1'. That seems unlikely given that if I instead add "insert" to the
above (#lang racket) source file and run Check Syntax, I get the same
error -- so it is indeed a static error.  (Well, maybe not "static",
there are probably three or four "times" at work here.)

2. Why does the same not happen with map?  I can use map freely; if I
put it in the #lang racket file and Check Syntax, it draws an arrow
from map to the required (typed) file.  Yet in the typed file:

> insert
- : (All (a b) (case-lambda (a (Listof a) -> (Listof a)) (a b -> (Pairof a b
#
> map
- : (All (c a b ...) (case-lambda ((a -> c) (Pairof a (Listof a)) ->
(Pairof c (Listof c))) ((a b ... b -> c) (Listof a) (Listof b) ... b
-> (Listof c
#

so map does not look any less polymorphic than insert

So what on earth is going on?
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Typed Racket and eq?

2010-08-02 Thread Shriram Krishnamurthi
If I export map (w/out change to type) from typed/racket and eq? it
against the map from racket, the two are eq?.  This feels like a
violation of abstraction: typed map is a "different thing" from
untyped map.

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Typed Racket and ADTs

2010-08-02 Thread Shriram Krishnamurthi
How do I define an ADT?  Eg, I want to provide this:

(provide insert check empty-set)

(define-type RealSet (Listof Real))

(: empty-set RealSet)
(define empty-set empty)

(: insert (Real RealSet -> RealSet))
(define insert cons)

(: check (Real RealSet -> Boolean))
(define (check e s)
  (if (member e s)
  true
  false))

I see that using the opaque form of require/typed I can import RealSet
as, say, type RS and truly hide its representation.  However, this:

1. doesn't have a counterpart for *untyped* code;

2. seems very ugly to do from a typed module: I seem to need to define
the new opaque type, then enumerate everything (that I want) exported
from the typed module.  Surely there's an easy way of saying

  import SetADT renaming RealSet to RS making it opaque

?  It seems natural, but I can't figure out how to say this.

Overall, the status of representation-hiding in Typed Racket seems
rather weird.  I find it odd that even programming entirely in Typed
Racket, representations leak by default.  Worse, If I'm writing a
module whose representations I expect to frequently change, and would
like user code to avoid inadvertently relying on them, there appears
to be nothing I can do (without providing a wrapper that simply
re-exports everything with the type made opaque -- and even then, it's
not clear how to hide access to the original).  Just as there's an
opaque require, why isn't there dually an opaque provide, so the
creator can decide to hide reps?  Even if opaque provide only worked
for other typed clients, that would be a big step up.

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Typed Racket interaction

2010-08-02 Thread Shriram Krishnamurthi
Here is a sequence of steps to do something that seems extremely
simple.  I want to create a binary tree of T.

First, I have no idea what this documentation means:

(struct:n (t ...))
is the type of structures named n with field types t.

All of "struct", "n" and "t" are italicized, suggesting they're all
meta-variables.  But only "n" and "t" are explained in the document.
Perhaps "struct:" is meant literally?

After several tries, I figure out no, it doesn't.  Okay, now I know
the basic syntax.

The next few things I do fail miserably, until I get this far:

(define-struct: (T) Node ([v : T] [l : (BinTreeof t)] [r : (BinTreeof t)]))
(define-type (BinTreeof t)
  (U 'empty
 [Node t]))

Now we get a classic impenetrable error message:

  Type Checker: Structure type constructor Node applied to non-regular
  arguments (Error) in: (Node t)

Whatever that means.  I rename the two "t"'s in Node to "T"'s:

(define-struct: (T) Node ([v : T] [l : (BinTreeof t)] [r : (BinTreeof t)]))
(define-type (BinTreeof t)
  (U 'empty
 [Node t]))

Now everything is fine...?!?  TR uses cpp to inline aliases?

Shriram
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Matthias Felleisen

Just to make sure: 

  Signatures are included because they were merged into the trunk before the 
branch was done. 

For example, 

(define int (signature Real))
(: x int)
(define x 3)

works in Beginner. It turns out however that even the German docs are broken. I 
should have explored more when Mike merged this in. Then again, I doubt we will 
have many Americans reading these docs. 

;; --- 

Pragmatics: While I am sure one can get very close to define-datatype, the docs 
don't suggest it's easy. Here is how you equip structures with signatures: 

(define-struct S (x y))

(define int (signature Integer))

(: make-S (int int -> S))
(: S-x (S -> int))
(: S-y (S -> int))

And that seems to be the simplest way. I doubt Shriram will be happy with this. 
What am I overlooking, Mike? 

-- Matthias



_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Jay McCarthy
That's fine with me. I wrote the release note addendum because the
original email contained the blurb, not because I'm stressing about
putting it in.

Jay

On Mon, Aug 2, 2010 at 6:06 AM, Matthew Flatt  wrote:
> At Mon, 2 Aug 2010 04:42:41 -0600, Jay McCarthy wrote:
>> These are the commits:
>
> Those are from July 22, one week after the branch for 5.0.1, so they
> would not normally be considered candidates for the 5.0.1 release.
>
>



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

"The glory of God is Intelligence" - D&C 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Matthew Flatt
At Mon, 2 Aug 2010 04:42:41 -0600, Jay McCarthy wrote:
> These are the commits:

Those are from July 22, one week after the branch for 5.0.1, so they
would not normally be considered candidates for the 5.0.1 release.

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Jay McCarthy
On Mon, Aug 2, 2010 at 4:31 AM, Eli Barzilay  wrote:
> On Aug  2, Matthias Felleisen wrote:
>> On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:
>>
>> > And for the (near) future -- figure out what's happenning in the
>> >  teaching languages.  I get the impression that things are moving
>> >  there almost randomly.
>>
>> No, this isn't random; it is unsynchronized:
>
> (Yeah, I used "random" in a random sense...)
>
>>  -- Shriram asked Jay to add define-datatype
>
> (and hashes? was there more?)

define-datatype, match, hashes

These are the commits:

http://github.com/plt/racket/commit/407dcee206678785b4b87bb513d7ba5f55ad8ab5

http://github.com/plt/racket/commit/eeada45868d73c02b59f5c1ecd16e414d5a114ac

http://github.com/plt/racket/commit/9eb053d4db1efd2881e1f749ad6b1eb12a6e8152

>
>>  -- Robby, Mike, and I decided to move signatures into BSL, ...
>>       but I underestimated when I'd get to the translation of
>>       the documentation
>>
>> So:
>>
>> 1. I propose to release as is: no addition to ASL, no docs for signatures
>>
>> 2. I propose to sync at PLT Day, in person.
>
> OK -- that leaves messes #1 (are Jay's changes included or not?) and
> #2 (test it properly) to sort out.
>
> --
>          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
>                    http://barzilay.org/                   Maze is Life!
>



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

"The glory of God is Intelligence" - D&C 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Eli Barzilay
On Aug  2, Matthias Felleisen wrote:
> On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:
> 
> > And for the (near) future -- figure out what's happenning in the
> >  teaching languages.  I get the impression that things are moving
> >  there almost randomly.
> 
> No, this isn't random; it is unsynchronized: 

(Yeah, I used "random" in a random sense...)

>  -- Shriram asked Jay to add define-datatype 

(and hashes? was there more?)

>  -- Robby, Mike, and I decided to move signatures into BSL, ...
>   but I underestimated when I'd get to the translation of
>   the documentation
> 
> So: 
> 
> 1. I propose to release as is: no addition to ASL, no docs for signatures 
> 
> 2. I propose to sync at PLT Day, in person. 

OK -- that leaves messes #1 (are Jay's changes included or not?) and
#2 (test it properly) to sort out.

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Matthias Felleisen

On Aug 2, 2010, at 6:11 AM, Eli Barzilay wrote:

> And for the (near) future -- figure out what's happenning in the
>  teaching languages.  I get the impression that things are moving
>  there almost randomly.


No, this isn't random; it is unsynchronized: 

 -- Shriram asked Jay to add define-datatype 

 -- Robby, Mike, and I decided to move signatures into BSL, ...
but I underestimated when I'd get to the translation of
the documentation

So: 

1. I propose to release as is: no addition to ASL, no docs for signatures 

2. I propose to sync at PLT Day, in person. 

-- Matthias


_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Matthias Felleisen

Signatures are documented but in German. It is on my list to 
'translate' this for the next release. -- Matthias




On Aug 2, 2010, at 5:57 AM, Jay McCarthy wrote:

> I don't know anything about signatures, since they're not documented
> or advertised.
> 
> I don't know why it isn't included... I thought the patch was cherry
> picked. I didn't test it in the release because I added the tests for
> the feature to tests/racket/advanced.rktl
> 
> Jay
> 
> On Mon, Aug 2, 2010 at 1:49 AM, Michael Sperber  
> wrote:
>> 
>> Eli Barzilay  writes:
>> 
>>> I don't know of any plan for signatures, but if it would be bad to
>>> advertise it if it's not included...  Jay/Ryan--??
>> 
>> Signatures are already in there (look in the log in collects/lang) -
>> they're just not documented yet.  They already give you this, for
>> example:
>> 
>> (define-struct foo (a b))
>> (define-struct bar (c d))
>> (define foo-or-bar
>>  (signature (mixed foo bar)))
>> 
>> At the very least, `define-datatype' should also define a signature.
>> 
>> --
>> Cheers =8-} Mike
>> Friede, Völkerverständigung und überhaupt blabla
>> 
> 
> 
> 
> -- 
> Jay McCarthy 
> Assistant Professor / Brigham Young University
> http://teammccarthy.org/jay
> 
> "The glory of God is Intelligence" - D&C 93
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev

_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Eli Barzilay
On Aug  2, Jay McCarthy wrote:
> I don't know anything about signatures, since they're not documented
> or advertised.
> 
> I don't know why it isn't included... I thought the patch was cherry
> picked. I didn't test it in the release because I added the tests
> for the feature to tests/racket/advanced.rktl

So to conclude the messes that need to be sorted out:

* Figure out if the changes are included or not, if not, figure out if
  they should be added or not, if yes, then figure out if retesting
  should be done or not.

* Especially given that there were changes in the teaching languages
  and the web server, it would be good to retest properly, using the
  release candidate.  (The test email has instructions on getting the
  tests -- either to add to the installed tree or use the "full"
  build.)

* And for the (near) future -- figure out what's happenning in the
  teaching languages.  I get the impression that things are moving
  there almost randomly.

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Jay McCarthy
I don't know anything about signatures, since they're not documented
or advertised.

I don't know why it isn't included... I thought the patch was cherry
picked. I didn't test it in the release because I added the tests for
the feature to tests/racket/advanced.rktl

Jay

On Mon, Aug 2, 2010 at 1:49 AM, Michael Sperber  wrote:
>
> Eli Barzilay  writes:
>
>> I don't know of any plan for signatures, but if it would be bad to
>> advertise it if it's not included...  Jay/Ryan--??
>
> Signatures are already in there (look in the log in collects/lang) -
> they're just not documented yet.  They already give you this, for
> example:
>
> (define-struct foo (a b))
> (define-struct bar (c d))
> (define foo-or-bar
>  (signature (mixed foo bar)))
>
> At the very least, `define-datatype' should also define a signature.
>
> --
> Cheers =8-} Mike
> Friede, Völkerverständigung und überhaupt blabla
>



-- 
Jay McCarthy 
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

"The glory of God is Intelligence" - D&C 93
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Michael Sperber

Eli Barzilay  writes:

> I don't know of any plan for signatures, but if it would be bad to
> advertise it if it's not included...  Jay/Ryan--??

Signatures are already in there (look in the log in collects/lang) -
they're just not documented yet.  They already give you this, for
example:

(define-struct foo (a b))
(define-struct bar (c d))
(define foo-or-bar
  (signature (mixed foo bar)))

At the very least, `define-datatype' should also define a signature.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Eli Barzilay
On Aug  2, Michael Sperber wrote:
> Sorry, I'm just seeing this now:
> 
> Eli Barzilay  writes:
> 
> > Final version, after some edits and reorganization.
> > * The Advanced Student Language now supports hash-table
> >   primitives, `define-datatype' for defining sets of related
> >   structs, and `match' for pattern matching.
> 
> Is it a good idea to advertise `define-datatype', given the
> impending introduction of signatures?  Is it even needed?
> 
> Also, it does not seem to have been merged to the release branch:
> 
> define-datatype: name is not defined, not a parameter, and not a
> primitive name

I don't know of any plan for signatures, but if it would be bad to
advertise it if it's not included...  Jay/Ryan--??

-- 
  ((lambda (x) (x x)) (lambda (x) (x x)))  Eli Barzilay:
http://barzilay.org/   Maze is Life!
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release Announcement for v5.0.1 -- final version

2010-08-02 Thread Michael Sperber

Sorry, I'm just seeing this now:

Eli Barzilay  writes:

> Final version, after some edits and reorganization.
> * The Advanced Student Language now supports hash-table primitives,
>   `define-datatype' for defining sets of related structs, and
>   `match' for pattern matching.

Is it a good idea to advertise `define-datatype', given the impending
introduction of signatures?  Is it even needed?

Also, it does not seem to have been merged to the release branch:

define-datatype: name is not defined, not a parameter, and not a primitive name

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev