Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Robby Findler
Yes, I think that would be great.

Which string constants specifically were you planning to remove? I
should probably check that they aren't used on planet.

Robby

On Mon, Jul 9, 2012 at 7:53 PM, Asumu Takikawa as...@ccs.neu.edu wrote:
 On 2012-07-08 15:47:27 +0800, Grecks Grecks wrote:
Hi, I post an issue on github 2 month before.
[1]https://github.com/plt/racket/issues/101

 For devs: while fixing this, I noticed that the code that used to
 implement this menu item is still around (along with string constants)
 but are unused. Should I remove that code while I'm at it?

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


Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Asumu Takikawa
On 2012-07-10 07:20:59 -0500, Robby Findler wrote:
 Which string constants specifically were you planning to remove? I
 should probably check that they aren't used on planet.

The `slideshow-insert-pict-box` constant doesn't appear to be used.

There are also `slideshow-hide-picts, `slideshow-show-picts,
`slideshow-cannot-show-picts` as well---I'm not sure whether these are
removable or not (I see they're used for a pict-snip%'s popup menu but I
can't seem to trigger that menu in DrRacket).

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


Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Robby Findler
Version 1.2 of cdrswift.plt seems to use the slideshow-insert-pict-box
string constant, but it is up to version 1.5 now.

  http://planet.racket-lang.org/display.ss?package=cdrswift.pltowner=dignatof

Probably best to just leave them in for now.

Robby

On Tue, Jul 10, 2012 at 8:48 AM, Asumu Takikawa as...@ccs.neu.edu wrote:
 On 2012-07-10 07:20:59 -0500, Robby Findler wrote:
 Which string constants specifically were you planning to remove? I
 should probably check that they aren't used on planet.

 The `slideshow-insert-pict-box` constant doesn't appear to be used.

 There are also `slideshow-hide-picts, `slideshow-show-picts,
 `slideshow-cannot-show-picts` as well---I'm not sure whether these are
 removable or not (I see they're used for a pict-snip%'s popup menu but I
 can't seem to trigger that menu in DrRacket).

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


Re: [racket-dev] Enhancement to the syntax system?

2012-07-10 Thread Eli Barzilay
20 minutes ago, Marijn wrote:
 
 It seems to me that both these results cannot be correct
 simultaneously, but I'll await the experts' opinion on that.

This does look weird:

  #lang racket
  (define-for-syntax (f stx) #`(let ([x 1]) #,stx))
  (define-syntax (m stx)
(with-syntax ([zz (f #'x)]) #`(let ([x 2]) zz)))
  (m)

evaluates to 1, but if I change the first two stx names into x
*or* if I change the argument name for the macro to x, then it
returns 2.

-- 
  ((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] Enhancement to the syntax system?

2012-07-10 Thread Matthew Flatt
At Tue, 10 Jul 2012 10:51:57 -0400, Eli Barzilay wrote:
 20 minutes ago, Marijn wrote:
  
  It seems to me that both these results cannot be correct
  simultaneously, but I'll await the experts' opinion on that.
 
 This does look weird:
 
   #lang racket
   (define-for-syntax (f stx) #`(let ([x 1]) #,stx))
   (define-syntax (m stx)
 (with-syntax ([zz (f #'x)]) #`(let ([x 2]) zz)))
   (m)
 
 evaluates to 1, but if I change the first two stx names into x
 *or* if I change the argument name for the macro to x, then it
 returns 2.

It's natural --- but not correct --- to think that #` is responsible
for hygiene, in which case `(f #'x)' should keep the given `x' separate
from the `let'-bound `x' in the result.

Instead, hygiene is the responsibility of macro invocation, and

 #`(let ([x 1]) #,#'x)

is simply the same as

 #`(let ([x 1]) x)

and so

 (f #'x)

above is equivalent to

 #`(let ([x 1]) x)


If you change the example to

 #lang racket
 (begin-for-syntax 
  (define-syntax-rule (f body)
#`(let ([x 1]) body)))
 (define-syntax (m stx)
   (with-syntax ([zz (f x)]) #`(let ([x 2]) zz)))
 (m)

so that `f' is used as a macro instead of a function, then you get 2,
since the macro-expansion of `(f x)' keeps the `x's separate.

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


Re: [racket-dev] Enhancement to the syntax system?

2012-07-10 Thread Ryan Culpepper

On 07/10/2012 10:51 AM, Eli Barzilay wrote:

20 minutes ago, Marijn wrote:


It seems to me that both these results cannot be correct
simultaneously, but I'll await the experts' opinion on that.


This does look weird:

   #lang racket
   (define-for-syntax (f stx) #`(let ([x 1]) #,stx))
   (define-syntax (m stx)
 (with-syntax ([zz (f #'x)]) #`(let ([x 2]) zz)))
   (m)

evaluates to 1, but if I change the first two stx names into x
*or* if I change the argument name for the macro to x, then it
returns 2.


The difference between

(define-for-syntax (f1 stx) #`(let ([x 1]) #,stx)

and

(define-for-syntax (f2 x) #`(let ([x 1]) #,x)

is that the 'x' in the template in the 'f2' is not bound-identifier=? to 
the 'x' that appears in the template of 'm', because it has a rename 
wrap due to the 'x' formal parameter of 'f2'. That is, 'f2' behaves 
essentially the same as


(define-for-syntax (f2* x*) #`(let ([x* 1]) #,x*)

A likely mistake is to think that the wrap generated by the 'x' in 'f2' 
doesn't count because it happens before we get around to the real 
macro expansion that you care about. But that's not the case (at least 
in Racket).


A good rule of thumb is to never use local variable names in your macro 
implementation (including compile-time auxiliary functions) that also 
appear in the macro's template (including etc).


A related error is the identifier used out of context error that you 
get from, eg,


(define-syntax (m stx)
  (let ([+ *])
#'(+ 1 2)))
(m)  ;; = identifier used out of context in: +

The binding of '+' in the macro changes the meaning of the '+' in the 
template, even though the bindings exist at different phases. You could 
perhaps avoid this issue by changing the hygiene algorithm by adding a 
phase level to rename wraps and skipping different-phase rename wraps 
during resolution. I'm not sure if this is a good idea or if anyone has 
tried it.


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


Re: [racket-dev] Enhancement to the syntax system?

2012-07-10 Thread Stefan Israelsson Tampe
samth made a pointer to

http://srfi.schemers.org/srfi-72/srfi-72.html

It does not look like guile racket etc. have implemented this yet.

Am I wrong?

This is precisely what I'm after!

On Tue, Jul 10, 2012 at 5:26 PM, Ludovic Courtès l...@gnu.org wrote:

 Hi,

 Matthew Flatt mfl...@cs.utah.edu skribis:

  It's natural --- but not correct --- to think that #` is responsible
  for hygiene, in which case `(f #'x)' should keep the given `x' separate
  from the `let'-bound `x' in the result.

 [...]

  If you change the example to
 
   #lang racket
   (begin-for-syntax
(define-syntax-rule (f body)
  #`(let ([x 1]) body)))
   (define-syntax (m stx)
 (with-syntax ([zz (f x)]) #`(let ([x 2]) zz)))
   (m)
 
  so that `f' is used as a macro instead of a function, then you get 2,
  since the macro-expansion of `(f x)' keeps the `x's separate.

 Interesting.  Thanks for the clarification and examples.

 Ludo’.


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


Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Vincent St-Amour
At Tue, 10 Jul 2012 09:13:24 -0500,
Robby Findler wrote:
 
 Version 1.2 of cdrswift.plt seems to use the slideshow-insert-pict-box
 string constant, but it is up to version 1.5 now.
 
   http://planet.racket-lang.org/display.ss?package=cdrswift.pltowner=dignatof
 
 Probably best to just leave them in for now.

Should we deprecate it and put it on a 1 year counter? (like
`mzlib/class100')

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


Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Robby Findler
I was thinking along similar lines.

But maybe it would be helpful to do this for all of the unused
string-constants in the tree? We could even move them into a planet
package now.

Robby

On Tue, Jul 10, 2012 at 10:54 AM, Vincent St-Amour stamo...@ccs.neu.edu wrote:
 At Tue, 10 Jul 2012 09:13:24 -0500,
 Robby Findler wrote:

 Version 1.2 of cdrswift.plt seems to use the slideshow-insert-pict-box
 string constant, but it is up to version 1.5 now.

   
 http://planet.racket-lang.org/display.ss?package=cdrswift.pltowner=dignatof

 Probably best to just leave them in for now.

 Should we deprecate it and put it on a 1 year counter? (like
 `mzlib/class100')

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


Re: [racket-dev] [racket] Insert Pict Box menu item not found in DrRacket

2012-07-10 Thread Vincent St-Amour
At Tue, 10 Jul 2012 11:23:04 -0500,
Robby Findler wrote:
 
 I was thinking along similar lines.
 
 But maybe it would be helpful to do this for all of the unused
 string-constants in the tree?

Good idea.

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


Re: [racket-dev] Enhancement to the syntax system?

2012-07-10 Thread Ludovic Courtès
Hi,

Matthew Flatt mfl...@cs.utah.edu skribis:

 It's natural --- but not correct --- to think that #` is responsible
 for hygiene, in which case `(f #'x)' should keep the given `x' separate
 from the `let'-bound `x' in the result.

[...]

 If you change the example to

  #lang racket
  (begin-for-syntax 
   (define-syntax-rule (f body)
 #`(let ([x 1]) body)))
  (define-syntax (m stx)
(with-syntax ([zz (f x)]) #`(let ([x 2]) zz)))
  (m)

 so that `f' is used as a macro instead of a function, then you get 2,
 since the macro-expansion of `(f x)' keeps the `x's separate.

Interesting.  Thanks for the clarification and examples.

Ludo’.

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


Re: [racket-dev] Enhancement to the syntax system?

2012-07-10 Thread Eli Barzilay
An hour and a half ago, Matthew Flatt wrote:
 
 It's natural --- but not correct --- to think that #` is responsible
 for hygiene, in which case `(f #'x)' should keep the given `x'
 separate from the `let'-bound `x' in the result.
 
 Instead, hygiene is the responsibility of macro invocation, and
 
  #`(let ([x 1]) #,#'x)
 
 is simply the same as
 
  #`(let ([x 1]) x)
 
 and so
 
  (f #'x)
 
 above is equivalent to
 
  #`(let ([x 1]) x)
 
 
 If you change the example to
 
  #lang racket
  (begin-for-syntax 
   (define-syntax-rule (f body)
 #`(let ([x 1]) body)))
  (define-syntax (m stx)
(with-syntax ([zz (f x)]) #`(let ([x 2]) zz)))
  (m)
 
 so that `f' is used as a macro instead of a function, then you get 2,
 since the macro-expansion of `(f x)' keeps the `x's separate.

Yeah, I think that this kind of confusion is there, but it's easy (at
least relatively easy) to build a mental model of how things work
and avoid such problems -- but the tricky bit here is that things
break when the `stx' is renamed to `x'.


50 minutes ago, Ryan Culpepper wrote:
 
 The difference between
 
 (define-for-syntax (f1 stx) #`(let ([x 1]) #,stx)
 
 and
 
 (define-for-syntax (f2 x) #`(let ([x 1]) #,x)
 
 is that the 'x' in the template in the 'f2' is not bound-identifier=? to 
 the 'x' that appears in the template of 'm', because it has a rename 
 wrap due to the 'x' formal parameter of 'f2'. That is, 'f2' behaves 
 essentially the same as
 
 (define-for-syntax (f2* x*) #`(let ([x* 1]) #,x*)

Yeah, I think that this is the more confusing bit.  (I suspected
something along this line, but didn't have time to figure out a good
explanation...)  So I think that the real confusion is actually a
combination of what Matthew pointed at in the above and this one,
making the result trickier than both.  In other words, I *think* that
the effect of the transformer's argument name makes it looks like the
#` *was* responsible for hygiene when it's actually just this point
that makes it happen...  (This is all IIUC.)


 A likely mistake is to think that the wrap generated by the 'x' in
 'f2' doesn't count because it happens before we get around to the
 real macro expansion that you care about. But that's not the case
 (at least in Racket).
 
 A good rule of thumb is to never use local variable names in your
 macro implementation (including compile-time auxiliary functions)
 that also appear in the macro's template (including etc).

Yeah, and a subtle lesson here is that `stx' is a useful convention.
(I think that `x' is common in some guile code, so this would be a
point for them.)


 A related error is the identifier used out of context error that
 you get from, eg,
 
 (define-syntax (m stx)
(let ([+ *])
  #'(+ 1 2)))
 (m)  ;; = identifier used out of context in: +
 
 The binding of '+' in the macro changes the meaning of the '+' in
 the template, even though the bindings exist at different
 phases. You could perhaps avoid this issue by changing the hygiene
 algorithm by adding a phase level to rename wraps and skipping
 different-phase rename wraps during resolution. I'm not sure if this
 is a good idea or if anyone has tried it.

(And this is what Matthew's last example gets by changing `f' to a
macro, right?  Also, Stefan posted a related message to the
scheme-reports list where he imlpemented some new #. thing which is
(roughly speaking) something that expands to a `let-syntax' and
therefore tries to do the same.)

In any case, it would be nice if the original example I posted (which
is a variant of what was discussed originally) would throw an error
instead of looking right in a way that is 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] Enhancement to the syntax system?

2012-07-10 Thread Stefan Israelsson Tampe
The question I posed was If it's possible to use srfi-72 in guile or
racket. It is indeed a wish
of mine that it's implemented because it will most certainly help me write
beutiful code because
that srfi cater to the coding style Ichoose to have. Without it one most
certainly need to use with-syntax to introduce the bindings in order to be
safe and avoid a multiple of possible syntactic loopholes as can see if you
read André van Tonder's

http://srfi.schemers.org/srfi-72/srfi-72.html

Anyway one does not need to change psyntax in order to come close to that
system. A more hacky
way is to use code like the one at the end of this document. It's a
reiteration and improvement on a
previous version. So with this hack I can write,

-
(use-modules (syntax unquote++))
(define (f x y) #`(let ((x 1)) (+ #,x #,y)))
(define (h y) ##`(let ((x 2)) #.((x) (f x y
(define-syntax g (lambda (x) (syntax-case x () ((_ y) ##`(let ((x y))
#.((x) (h x)))
scheme@(guile-user) (g 3)
$2 = 5

--
In racket,
(define-for-syntax (f x y) #`(let ((x 1)) (+ #,x #,y)))
(define-for-syntax (h y) #`(let ((x 2)) #,(f #'x y))
(define-syntax (g stx) (syntax-case stx () ((_ y) #`(let ((x y)) #,(h
#'x)
 (g 3)
4
--

This shows that it was just luck previously when racket produced the
correct (for my intention) answer.
with srfi-72 a correct answer would have been produced. Without srfi-72 I
will then move over to use
##` and #. in my code because it will be easy to transfer later on if when
srfi-72 is available in some form.

/Stefan

(define-module (syntax unquote++)
  #:export (quasisyntax++ insyntax))

(define *s* (make-fluid '()))
(define *t* (make-fluid '()))

(define table (make-weak-key-hash-table))
(define (add-lambda lam)
  (let* ((id (gensym id))
 (x  (datum-syntax #'table id)))
(hashq-set! table id lam)
x))
(define (plexer x . l)
  (let ((lam (hashq-ref table x)))
(apply lam l)))

(define (parse stx x)
  (syntax-case x (unsyntax insyntax unsyntax-splicing)
((unsyntax  . _) x)
((unsyntax-splicing . _) x)
((insyntax ((p ...) c ...))
 (with-syntax ((g (datum-syntax stx (gensym g)))
   (i (datum-syntax stx (gensym i
   (fluid-set! *s* (cons #'(g (lambda (x)
(syntax-case x ()
  ((_ p ...) (plexer 'i #'p ...)
 (fluid-ref *s*)))
   (fluid-set! *t* (cons #'(i (add-lambda
   (lambda (p ...) (begin c ...
 (fluid-ref *t*)))
   #'(g p ...)))
((x . l)
 (cons (parse stx #'x) (parse stx #'l)))
(x #'x)))

(define-syntax quasisyntax++
  (lambda (x)
(syntax-case x ()
  ((_ y)
   (begin
 (fluid-set! *s* '())
 (fluid-set! *t* '())
 (with-syntax ((statement (parse x #'y))
   (lets  (fluid-ref *s*))
   (withs (fluid-ref *t*)))
   #'(with-syntax withs
   #`(let-syntax lets statement

(define (rg ch stream)
  (let ((x (read-char stream)))
(cond
 ((eqv? x #\`)
  `(quasisyntax++ ,(read stream)))
 (#t
  (error Wrong format of # reader extension)

(define (rg. ch stream) `(insyntax ,(read stream)))

(read-hash-extend #\# rg)
(read-hash-extend #\. rg.)
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Need a clarification on the implementation of stream-map

2012-07-10 Thread Jay McCarthy
And thus, the type of stream-map is NOT

stream-map : (a - b) (stream a) - (stream b)

 but

stream-map : (a b c ... - d e f ...) (stream a b c ...) - (stream d e f ...)

Jay

On Sun, Jul 8, 2012 at 8:00 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I'm not sure about the rationale behind the design of stream-map, but
 any as a result contract for a function indicates it may return
 multiple values (in the range of a function any is a special
 keyword). any/c is a contract for a single value.

 Robby

 On Sun, Jul 8, 2012 at 6:25 AM, Daniel King dank...@ccs.neu.edu wrote:
 Question 0:

 In collects/racket/stream.rkt, `stream-map' is defined as:

   (define (stream-map f s)
 (unless (procedure? f) (raise-argument-error 'stream-map procedure? f))
 (unless (stream? s) (raise-argument-error 'stream-map stream? s))
 (let loop ([s s])
   (cond
[(stream-empty? s) empty-stream]
[else (stream-cons (call-with-values (lambda () (stream-first s)) f)
   (loop (stream-rest s)))])))


 I don't understand the difference between:

   (call-with-values (lambda () (stream-first s)) f)

 and

   (f (stream-first s))

 because the contract for `stream-first' is:

   (stream-first s) → any
   s : (and/c stream? (not/c stream-empty?))

 Which seems to me to just return a single value. I was taking a second look 
 at
 my changes to `stream-map' which add support for multiple streams. I noticed
 this unusual snippet as I rebased onto the latest version of plt/master.


 Question 1:

 Would it make more sense to simply update all the sequence procedures to 
 handle
 multiple sequences? Is there a circumstance where it doesn't make sense to
 handle multiple sequences in a sequence procedure such as `sequence-map'?

 I figure that the sequence procedures don't support multiple sequences is 
 just
 lack of interest. Do most people just use the `for' macros in these cases?

 --
 Dan King
 College of Computer and Information Science
 Northeastern University

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

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



-- 
Jay McCarthy j...@cs.byu.edu
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

The glory of God is Intelligence - DC 93

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


Re: [racket-dev] [plt] Push #24958: master branch updated

2012-07-10 Thread Neil Toronto
I've been looking forward to trying this since I read your paper draft 
last night. I didn't expect it so soon, though!


Neil ⊥

On 07/10/2012 09:01 AM, jamesswa...@racket-lang.org wrote:

jamesswaine has updated `master' from 48e154e3cb to dbec8765e3.
   http://git.racket-lang.org/plt/48e154e3cb..dbec8765e3

=[ 6 Commits ]==
Directory summary:
   34.5% collects/racket/future/private/
   43.6% collects/scribblings/guide/
6.5% collects/scribblings/reference/
   11.1% collects/tests/future/

~~

b6f71ec James Swaine jamesswa...@racket-lang.org 2012-02-29 11:43
:
| Add futures visualizer, improvements to futures logging
:
   A collects/racket/future/private/constants.rkt
   A collects/racket/future/private/display.rkt
   A collects/racket/future/private/drawing-helpers.rkt
   A collects/racket/future/private/graph-drawing.rkt
   A collects/racket/future/private/gui-helpers.rkt
   A collects/racket/future/private/visualizer-data.rkt
   A collects/racket/future/private/visualizer-drawing.rkt
   A collects/racket/future/private/visualizer-gui.rkt
   A collects/racket/future/visualizer.rkt
   M collects/scribblings/guide/futures.scrbl | 398 +---
   A collects/scribblings/guide/mand-bad-hover.png
   A collects/scribblings/guide/mand-bad.png
   A collects/scribblings/guide/mand-good.png
   A collects/scribblings/guide/vis-main.png
   M collects/scribblings/reference/concurrency.scrbl |   1 +
   M collects/scribblings/reference/futures.scrbl |  18 +-
   A collects/scribblings/reference/futures-visualizer.scrbl
   A collects/tests/future/bad-trace1.rkt
   M collects/tests/future/future.rkt |   2 +-
   A collects/tests/future/visualizer.rkt
   A qsort2.rkt
   M src/racket/src/future.c  | 145 +--
   M src/racket/src/future.h  |   2 +-

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


Re: [racket-dev] [plt] Push #24958: master branch updated

2012-07-10 Thread James Swaine
Cool!

On Tue, Jul 10, 2012 at 2:02 PM, Neil Toronto neil.toro...@gmail.comwrote:

 I've been looking forward to trying this since I read your paper draft
 last night. I didn't expect it so soon, though!

 Neil ⊥


 On 07/10/2012 09:01 AM, jamesswa...@racket-lang.org wrote:

 jamesswaine has updated `master' from 48e154e3cb to dbec8765e3.

 http://git.racket-lang.org/**plt/48e154e3cb..dbec8765e3http://git.racket-lang.org/plt/48e154e3cb..dbec8765e3

 =[ 6 Commits ]=**
 =
 Directory summary:
34.5% collects/racket/future/**private/
43.6% collects/scribblings/guide/
 6.5% collects/scribblings/**reference/
11.1% collects/tests/future/

 ~~

 b6f71ec James Swaine jamesswa...@racket-lang.org 2012-02-29 11:43
 :
 | Add futures visualizer, improvements to futures logging
 :
A collects/racket/future/**private/constants.rkt
A collects/racket/future/**private/display.rkt
A collects/racket/future/**private/drawing-helpers.rkt
A collects/racket/future/**private/graph-drawing.rkt
A collects/racket/future/**private/gui-helpers.rkt
A collects/racket/future/**private/visualizer-data.rkt
A collects/racket/future/**private/visualizer-drawing.rkt
A collects/racket/future/**private/visualizer-gui.rkt
A collects/racket/future/**visualizer.rkt
M collects/scribblings/guide/**futures.scrbl | 398
 +---
A collects/scribblings/guide/**mand-bad-hover.png
A collects/scribblings/guide/**mand-bad.png
A collects/scribblings/guide/**mand-good.png
A collects/scribblings/guide/**vis-main.png
M collects/scribblings/**reference/concurrency.scrbl |   1 +
M collects/scribblings/**reference/futures.scrbl |  18 +-
A collects/scribblings/**reference/futures-visualizer.**scrbl
A collects/tests/future/bad-**trace1.rkt
M collects/tests/future/future.**rkt |   2 +-
A collects/tests/future/**visualizer.rkt
A qsort2.rkt
M src/racket/src/future.c  | 145 +--
M src/racket/src/future.h  |   2 +-


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


[racket-dev] Deprecating collects

2012-07-10 Thread Asumu Takikawa
Hi all,

Recently, we've made some progress on getting rid of parts of our
legacy codebase (e.g., mzlib/class100). Since a release is coming up,
that is an opportunity to do more cleanup.  Vincent and I have been
brainstorming what other collections could be set on a 1-year
deprecation  removal notice.

Here is a list of potential collections to deprecate with accompanying
rationales. Some of these may still be useful and worth keeping
around; we may have missed some of their use cases. This is just a
first stab at it:

- combinator-parser
This library only has .txt documentaiton and looks bitrotted.
There are no users of this collection as far as we know and
it's unlikely to gain any (due to lack of documentation).
- test-box-recovery
A library for compatibility with the pre-v360 DrScheme format
- tex2page
Undocumented and it's unclear how it's related to Racket
- defmacro in mzlib
mzlib in general, but this one in particular because it is highly
misleading for newcomers (who think it's a blessed macro facility).
Has no real users in the core codebase (there are two requires
in benchmarks but no uses)
- mzlib
Most of this library has been superceded and the rest should
probably either be moved elsewhere (e.g., mzlib/control) or
removed.
- mzscheme
This is a superceded, legacy language

Some of these collections may have users outside of the codebase, but
they are likely running on older versions of Racket anyway. Some of
these collections could be turned into PLaneT packages instead.

Any thoughts?

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Matthew Flatt
At Tue, 10 Jul 2012 15:30:33 -0400 (EDT), Asumu Takikawa wrote:
 - combinator-parser [...]
 - test-box-recovery [...]
 - tex2page [...]

These seem fine with me, because I think they have no current users.

We've had enough versions with the test-box recovery tool that if
someone really needs it, they can run an older version to get to the
new version.

 - defmacro in mzlib

I'm skeptical that this one should be removed,. At a minimum, though,
it could be better explained/discouraged in the docs for the hack that
it is.

 - mzlib [...]
 - mzscheme [...]

I don't think these should be removed or deprecated, ever. I have lots
of code that still refers to them --- I doubt that I'm alone --- and I
think we should be able to support them.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Robby Findler
On Tue, Jul 10, 2012 at 2:39 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Tue, 10 Jul 2012 15:30:33 -0400 (EDT), Asumu Takikawa wrote:
 - combinator-parser [...]
 - test-box-recovery [...]
 - tex2page [...]

 These seem fine with me, because I think they have no current users.

 We've had enough versions with the test-box recovery tool that if
 someone really needs it, they can run an older version to get to the
 new version.

 - defmacro in mzlib

 I'm skeptical that this one should be removed,. At a minimum, though,
 it could be better explained/discouraged in the docs for the hack that
 it is.

Why do you want to keep this?

 - mzlib [...]
 - mzscheme [...]

 I don't think these should be removed or deprecated, ever. I have lots
 of code that still refers to them --- I doubt that I'm alone --- and I
 think we should be able to support them.

I agree that these should never be removed. I would not mind if they
were marked in some way as these are here for legacy reasons. New
code should use XYZ with specific pointers and helpful advice.

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


Re: [racket-dev] Need a clarification on the implementation of stream-map

2012-07-10 Thread Daniel King
Sorry, I accidentally sent this off the mailing list and accidentally
switched emails.

Eli, I don't see any trace of multiple valued `stream's in
racket/stream. Can you confirm or deny their existence?

On Tue, Jul 10, 2012 at 11:13 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
 Eli wrote racket/stream based on racket/sequence which I wrote. You'll
 have to ask him whether he added support for multiple-value sequences
 and how to get them.

 Jay

 On Tue, Jul 10, 2012 at 4:15 PM, Daniel King dank...@cern.ch wrote:
 On Tue, Jul 10, 2012 at 9:06 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
 Your example is one-valued stream not a three-valued stream.

 How does one produce a stream with more than one-value?

 I assume that if there are no multi-valued streams then there is no need for 
 the
 aforementioned snippet in the implementation of `stream-map'.

 --
 Dan King
 Northeastern University



 --
 Jay McCarthy j...@cs.byu.edu
 Assistant Professor / Brigham Young University
 http://faculty.cs.byu.edu/~jay

 The glory of God is Intelligence - DC 93



-- 
Dan King
College of Computer and Information Science
Northeastern University
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Asumu Takikawa
 - Original Message -
 I agree that these should never be removed. I would not mind if they
 were marked in some way as these are here for legacy reasons. New
 code should use XYZ with specific pointers and helpful advice.

Okay, we will just add the deprecation notices to the documentation
(using the same notice that `htdp/image` and `mzlib/class100` use) but
otherwise won't touch `mzlib` and `mzscheme`.

There are also some libraries that are still in `mzlib` (with pointers
from `racket`) such as `unit` and `control`, so we will go ahead and
move these to `racket` and leave pointers in `mzlib` (but legacy code
should still work) unless anyone has any objections.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Neil Van Dyke

Robby Findler wrote at 07/10/2012 05:20 PM:

On Tue, Jul 10, 2012 at 2:39 PM, Matthew Flattmfl...@cs.utah.edu  wrote:
   

- mzlib [...]
- mzscheme [...]
   

I don't think these should be removed or deprecated, ever. I have lots
of code that still refers to them --- I doubt that I'm alone --- and I
think we should be able to support them.
 

I agree that these should never be removed. I would not mind if they
were marked in some way as these are here for legacy reasons. New
code should use XYZ with specific pointers and helpful advice.
   


I'm still using some mzlib in *new* code.  Specifically, getpid, 
this-expression-source-directory, gethostname, and perhaps one or 
two other things.  I could find other ways to do those things if I had 
to, but those definitions pop up when I search, and there's no glaring 
warning not to use them.


Neil V.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Carl Eastlund
On Tue, Jul 10, 2012 at 6:44 PM, Neil Van Dyke n...@neilvandyke.org wrote:
 Robby Findler wrote at 07/10/2012 05:20 PM:

 On Tue, Jul 10, 2012 at 2:39 PM, Matthew Flattmfl...@cs.utah.edu  wrote:

 - mzlib [...]
 - mzscheme [...]


 I don't think these should be removed or deprecated, ever. I have lots
 of code that still refers to them --- I doubt that I'm alone --- and I
 think we should be able to support them.


 I agree that these should never be removed. I would not mind if they
 were marked in some way as these are here for legacy reasons. New
 code should use XYZ with specific pointers and helpful advice.

 I'm still using some mzlib in *new* code.  Specifically, getpid,
 this-expression-source-directory, gethostname, and perhaps one or two
 other things.  I could find other ways to do those things if I had to, but
 those definitions pop up when I search, and there's no glaring warning not
 to use them.

All the useful contents in mzscheme and mzlib should really have an
equivalent somewhere else, usually in racket/something, so that new
code never needs to import old libraries.  That would allow mzscheme
and mzlib to be deprecated as legacy code.  Personally I'd be okay
with it being removed after sufficient warning, but I can see the
argument for maintaining them indefinitely.  If we ever get a
distribution split up into separate packages, then developers could
choose whether to install mzscheme and mzlib if they really
[did/didn't] need them, and we'd get the best of both worlds.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Vincent St-Amour
At Tue, 10 Jul 2012 18:44:28 -0400,
Neil Van Dyke wrote:
 I'm still using some mzlib in *new* code.  Specifically, getpid, 
 this-expression-source-directory, gethostname, and perhaps one or 
 two other things.  I could find other ways to do those things if I had 
 to, but those definitions pop up when I search, and there's no glaring 
 warning not to use them.

Good point.

We're looking through `mzlib''s bindings to find such functions that
don't have equivalents elsewhere in the collects. We're planning to move
these to appropriate libraries. For example, `gethostname' and `getpid'
should probably go somewhere like `racket/os' (and probably be renamed
to `get-hostname' and `get-pid').

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Robby Findler
On this front, this-expression-source-directory is, for nearly all
purposes, worse than define-runtime-path.

Robby

On Tue, Jul 10, 2012 at 5:54 PM, Vincent St-Amour stamo...@ccs.neu.edu wrote:
 At Tue, 10 Jul 2012 18:44:28 -0400,
 Neil Van Dyke wrote:
 I'm still using some mzlib in *new* code.  Specifically, getpid,
 this-expression-source-directory, gethostname, and perhaps one or
 two other things.  I could find other ways to do those things if I had
 to, but those definitions pop up when I search, and there's no glaring
 warning not to use them.

 Good point.

 We're looking through `mzlib''s bindings to find such functions that
 don't have equivalents elsewhere in the collects. We're planning to move
 these to appropriate libraries. For example, `gethostname' and `getpid'
 should probably go somewhere like `racket/os' (and probably be renamed
 to `get-hostname' and `get-pid').

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Matthew Flatt
At Tue, 10 Jul 2012 16:20:16 -0500, Robby Findler wrote:
 On Tue, Jul 10, 2012 at 2:39 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
  At Tue, 10 Jul 2012 15:30:33 -0400 (EDT), Asumu Takikawa wrote:
  - defmacro in mzlib
 
  I'm skeptical that this one should be removed,. At a minimum, though,
  it could be better explained/discouraged in the docs for the hack that
  it is.
 
 Why do you want to keep this?

Some will want `defmacro', maybe for porting old code. So, if we don't
provide `defmacro', then others will waste time re-creating it and/or
asking how to re-create it.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Robby Findler
Right, of course you're right.

On Tue, Jul 10, 2012 at 7:32 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Tue, 10 Jul 2012 16:20:16 -0500, Robby Findler wrote:
 On Tue, Jul 10, 2012 at 2:39 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
  At Tue, 10 Jul 2012 15:30:33 -0400 (EDT), Asumu Takikawa wrote:
  - defmacro in mzlib
 
  I'm skeptical that this one should be removed,. At a minimum, though,
  it could be better explained/discouraged in the docs for the hack that
  it is.

 Why do you want to keep this?

 Some will want `defmacro', maybe for porting old code. So, if we don't
 provide `defmacro', then others will waste time re-creating it and/or
 asking how to re-create it.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Eli Barzilay
5 hours ago, Asumu Takikawa wrote:
 Recently, we've made some progress on getting rid of parts of our
 legacy codebase (e.g., mzlib/class100). Since a release is coming
 up, that is an opportunity to do more cleanup.  Vincent and I have
 been brainstorming what other collections could be set on a 1-year
 deprecation  removal notice.

As long as you're trying to do something proper, I think that you
should come up with a good mechanism for ensuring the eventual
removal.  Something like this:

  * Add some deprecation information that is used to specify a removal
timeline: eg, a time that it will be very strongly discouraged
from being used, and a time that it will be actually removed, and
possibly some recommendation like code should not use it.  A
nice feature could be specifying that it will move to a planet
package, with a reference to that package in the recommendation,
and timeline dates indicating when the move will hapen.

  * This information can be in code or in info files or something like
that.

  * The documentation could extract this information to be rendered
nicely.

  * Have some ways to provide sufficient advance warnings for people.
For example, when the strongly discouraged date has passed, a
macro could throw up a log warning, some time after that it could
throw an stderr warning.

  * Have a way to avoid forgetting the removal.  Originally, I
suggested throwing an error from a macro, but that's probably too
aggresive for people who would want to keep using old distribution
for a long time.  So a more mild approach would be to have a test
suite that fails after the expiration date, ensuring that it does
get removed but not breaking up for people.


 - combinator-parser
 This library only has .txt documentaiton and looks bitrotted.
 There are no users of this collection as far as we know and it's
 unlikely to gain any (due to lack of documentation).
 - test-box-recovery
 A library for compatibility with the pre-v360 DrScheme format

+1


 - tex2page
 Undocumented and it's unclear how it's related to Racket

AFAIK, Dorai is still maintaining that.  Perhaps it could be moved
into a planet package instead.  There's a minor complication there in
that it's code that is supposed to run in multiple systems, and he'll
probably need someone to actually do the planet packaging and the
occasional update for him...


 - mzlib
 Most of this library has been superceded and the rest should
 probably either be moved elsewhere (e.g., mzlib/control) or
 removed.
 - mzscheme
 This is a superceded, legacy language

It does look impractical to remove them, but my guess is that it will
be possible to do so in a much longer timeframe.  It will definitely
help to move the real code left in mzlib into racket/* so that
existing uses can be updated too.  Also, it would be nice to
continuously upgrade files that use the `mzscheme' language.

With packages, they could be put into a compat package, which would
be a good additional hint for what they are.


 - defmacro in mzlib
 mzlib in general, but this one in particular because it is
 highly misleading for newcomers (who think it's a blessed macro
 facility).  Has no real users in the core codebase (there are
 two requires in benchmarks but no uses)

-1, I'll reply elsewhere.

-- 
  ((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] Deprecating collects

2012-07-10 Thread Eli Barzilay
An hour and a half ago, Robby Findler wrote:
 On this front, this-expression-source-directory is, for nearly all
 purposes, worse than define-runtime-path.

I think that there are some rare uses that can use
`this-expression-source-directory'.  Not for things that you depend
on, but for code that actually wants to know where it is in the
filesystem.  For example, code that knows how to update itself, wants
to package its own source tree, or wants to remove .git* files from
itself.  In such cases you don't want to add a . runtime path,
because they're not uses that imply a dependency.

But perhaps the difference is too subtle to be worth keeping.  Or
maybe there should be something like the runtime-path tool that
doesn't add a depencency.

-- 
  ((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] Deprecating collects

2012-07-10 Thread Neil Van Dyke
If someone has a good reason to get rid of 
this-expression-source-directory, I'm mostly indifferent.


Neil V.

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


Re: [racket-dev] Deprecating collects

2012-07-10 Thread Eli Barzilay
50 minutes ago, Matthew Flatt wrote:
 
 Some will want `defmacro', maybe for porting old code. So, if we
 don't provide `defmacro', then others will waste time re-creating it
 and/or asking how to re-create it.

+7.  And given a plan for migrating code from mzlib/* to racket/*, I
think that this should be moved too -- but the documentation should be
very explicit about the bad sides of using it, much more than it does
now.  (It could also mention a brief note on how it guesses the
context back since that makes the hack aspect very obvious.)

Three concrete examples for it being very useful:

1. Porting old scheme or CL code, or even new code written by people
   who know only symbolic macros.  In both cases it's better to have
   some way to do a quick job, and later on upgrade to proper macros
   rather than make it an all-or-nothing job (which in these cases
   will often end up on the nothing side).

2. Semi-related: some people will inevitably use defmacro because they
   have a vague intuition that it's obviously the most powerful
   system, so they'll continue using it.  Having a defmacro in Racket
   is a very real way to say no, it's a weaker system that can be
   emulated.  I know that this is a very high-level reason, but it is
   manifested in a real way by allowing these people to port/write
   code quickly and later on learn about proper macros.  (This item is
   based on a *lot* of interactions I've had with many people on this
   subject.)

3. Another place where I find it useful (and also semi²-related), is
   teaching.  I find it very useful to introduce macros as just sexpr
   functions since it corresponds to the simplified mental model that
   students use for writing interpreters, then see how that breaks,
   then show how the syntax type should grow from sexpr to
   sexpr+scope, which also makes it more natural to later see how it
   keeps growing to accomodate source information and more.

-- 
  ((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] [plt] Push #24958: master branch updated

2012-07-10 Thread Eli Barzilay
This commit adds a bad dependency from the core to framework.  Fixing
it is probably not hard, but it leads to an obvious question:

Why is this in racket instead of some new collection?



10 hours ago, jamesswa...@racket-lang.org wrote:
 b6f71ec James Swaine jamesswa...@racket-lang.org 2012-02-29 11:43
 :
 | Add futures visualizer, improvements to futures logging
 :
   A collects/racket/future/private/constants.rkt
   A collects/racket/future/private/display.rkt
   A collects/racket/future/private/drawing-helpers.rkt
   A collects/racket/future/private/graph-drawing.rkt
   A collects/racket/future/private/gui-helpers.rkt
   A collects/racket/future/private/visualizer-data.rkt
   A collects/racket/future/private/visualizer-drawing.rkt
   A collects/racket/future/private/visualizer-gui.rkt
   A collects/racket/future/visualizer.rkt

-- 
  ((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] Need a clarification on the implementation of stream-map

2012-07-10 Thread Eli Barzilay
No, I didn't write `racket/stream' -- Matthew did it based on the
stream srfi.  This came up not too long ago, and I sent a question
about it here:
http://lists.racket-lang.org/dev/archive/2012-June/009612.html

Since there were no replies, I meant to remove it but didn't get to
it.  I'll push it out now.


6 hours ago, Daniel King wrote:
 Sorry, I accidentally sent this off the mailing list and
 accidentally switched emails.
 
 Eli, I don't see any trace of multiple valued `stream's in
 racket/stream. Can you confirm or deny their existence?
 
 On Tue, Jul 10, 2012 at 11:13 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
  Eli wrote racket/stream based on racket/sequence which I
  wrote. You'll have to ask him whether he added support for
  multiple-value sequences and how to get them.

-- 
  ((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] [plt] Push #24958: master branch updated

2012-07-10 Thread Robby Findler
It is the future visualizer so I thought it belonged with the visualizer. No?

Alternative suggestions welcome.

Robby

On Tue, Jul 10, 2012 at 9:34 PM, Eli Barzilay e...@barzilay.org wrote:
 This commit adds a bad dependency from the core to framework.  Fixing
 it is probably not hard, but it leads to an obvious question:

 Why is this in racket instead of some new collection?



 10 hours ago, jamesswa...@racket-lang.org wrote:
 b6f71ec James Swaine jamesswa...@racket-lang.org 2012-02-29 11:43
 :
 | Add futures visualizer, improvements to futures logging
 :
   A collects/racket/future/private/constants.rkt
   A collects/racket/future/private/display.rkt
   A collects/racket/future/private/drawing-helpers.rkt
   A collects/racket/future/private/graph-drawing.rkt
   A collects/racket/future/private/gui-helpers.rkt
   A collects/racket/future/private/visualizer-data.rkt
   A collects/racket/future/private/visualizer-drawing.rkt
   A collects/racket/future/private/visualizer-gui.rkt
   A collects/racket/future/visualizer.rkt

 --
   ((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] promise vs polym contracts

2012-07-10 Thread Eli Barzilay
On Friday, Carl Eastlund wrote:
 
 From in-person conversation, what's really going on here is that
 Matthias is talking about some other, imaginary language, not
 Racket, where _any_ primitive operation other than promise? forces
 any promises in its arguments.  In this language, promises are more
 like an implicit monad than a data structure.

To make it more concrete in a possibly more obscure way, I think that
he's talking about a world where you only need `lazy', not `delay'.
(Since the only point of the latter is being able to distinguish a
promise that forces to a promise.)  To put it differently, you don't
have to switch to the world where promises are forced implicitly
(that's the r5rs blurb that I said many times that it should be
removed since it's much more than just a footnote to a language), you
just need a world where being a `promise?' is something that concerns
only meta/introspective kind of code, as in Robby's followp.


On Saturday, Matthias Felleisen wrote:
 
 The more general idea is that there is an alternative design space
 out there where you want 'boxes' that signal errors when touched by
 strict functions. You need these every time you want transparent
 transitions from one point in the computational spectrum to another.
 
 ;; ---
 
 And one more level up, I am thinking of selling Racket as a
 wide-spectrum programming language, the first one that introduces
 safe or transparent transitions properly.

To combine both of these and my general wish for how the lazy language
would evolve: it would be nice beyond words if there was some new
implicit `#%value' macro wrapped around places that require a value.
With that, an implementation of a lazy language would be trivial,
together with all of the related similar-in-spirit languages.

(To relate this to another recent thing -- having a no-value thing
that doesn't leak out is too restrictive for some uses (as I need to
write in the followup I promised), but a way to loosen that
restriction so you can pass around no-values and avoid a damaging leak
would be to make such a `#%value' check for them...  But that's of
course just vague hand-waving that would naively suffer from the same
perfomance problems...)

-- 
  ((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] [plt] Push #24958: master branch updated

2012-07-10 Thread Eli Barzilay

10 minutes ago, Robby Findler wrote:
 It is the future visualizer so I thought it belonged with the
 visualizer. No?

(You mean ... belonged with the futures, right?)

 Alternative suggestions welcome.

I think that it fits well with other meta-analysis kind of tools like
errortrace and the profiler, so a new toplevel collection seems to
make perfect sense.  I don't have a concrete suggestion better than
future-visualizer though since I don't know what it does exactly.
Maybe future-debugger or future-tracker or something like that?



 On Tue, Jul 10, 2012 at 9:34 PM, Eli Barzilay e...@barzilay.org wrote:
  This commit adds a bad dependency from the core to framework.
  Fixing it is probably not hard, but it leads to an obvious
  question:
 
  Why is this in racket instead of some new collection?

-- 
  ((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] [plt] Push #24958: master branch updated

2012-07-10 Thread Robby Findler
On Tue, Jul 10, 2012 at 10:41 PM, Eli Barzilay e...@barzilay.org wrote:

 10 minutes ago, Robby Findler wrote:
 It is the future visualizer so I thought it belonged with the
 visualizer. No?

 (You mean ... belonged with the futures, right?)

Right. :)

 Alternative suggestions welcome.

 I think that it fits well with other meta-analysis kind of tools like
 errortrace and the profiler, so a new toplevel collection seems to
 make perfect sense.  I don't have a concrete suggestion better than
 future-visualizer though since I don't know what it does exactly.
 Maybe future-debugger or future-tracker or something like that?

I think we have too many top-level collections and making a new one,
especially with future- in the name seems like a step in the wrong
direction.

(visualizer is a better word than debugger or tracker for what
it does, IMO, altho it has elements of those. But if you read the docs
in the Guide about it, you should get some idea what it does.)

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


Re: [racket-dev] [plt] Push #24958: master branch updated

2012-07-10 Thread James Swaine
On Tue, Jul 10, 2012 at 10:51 PM, Robby Findler ro...@eecs.northwestern.edu
 wrote:

 On Tue, Jul 10, 2012 at 10:41 PM, Eli Barzilay e...@barzilay.org wrote:
 
  10 minutes ago, Robby Findler wrote:
  It is the future visualizer so I thought it belonged with the
  visualizer. No?
 
  (You mean ... belonged with the futures, right?)

 Right. :)

  Alternative suggestions welcome.
 
  I think that it fits well with other meta-analysis kind of tools like
  errortrace and the profiler, so a new toplevel collection seems to
  make perfect sense.  I don't have a concrete suggestion better than
  future-visualizer though since I don't know what it does exactly.
  Maybe future-debugger or future-tracker or something like that?

 I think we have too many top-level collections and making a new one,
 especially with future- in the name seems like a step in the wrong
 direction.

 (visualizer is a better word than debugger or tracker for what
 it does, IMO, altho it has elements of those. But if you read the docs
 in the Guide about it, you should get some idea what it does.)


Agreed, debugger and tracker don't really adequately describe it.
 Maybe future-profiler is another option, but maybe confusing since we
already have profiler.  (But I still think visualizer is best, IMHO).



 Robby

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


Re: [racket-dev] [plt] Push #24958: master branch updated

2012-07-10 Thread Eli Barzilay
An hour and a half ago, Robby Findler wrote:
 On Tue, Jul 10, 2012 at 10:41 PM, Eli Barzilay e...@barzilay.org wrote:
 
  10 minutes ago, Robby Findler wrote:
  It is the future visualizer so I thought it belonged with the
  visualizer. No?
 
  (You mean ... belonged with the futures, right?)
 
 Right. :)
 
  Alternative suggestions welcome.
 
  I think that it fits well with other meta-analysis kind of tools like
  errortrace and the profiler, so a new toplevel collection seems to
  make perfect sense.  I don't have a concrete suggestion better than
  future-visualizer though since I don't know what it does exactly.
  Maybe future-debugger or future-tracker or something like that?
 
 I think we have too many top-level collections and making a new one,
 especially with future- in the name seems like a step in the wrong
 direction.

If more tools will be there, then it could be futute/something...
Or maybe add a new tools collection for other similar things?
But in any case, having a new toplevel collection seems much less of a
problem than having a tool in racket/*.

 (visualizer is a better word than debugger or tracker for what
 it does, IMO, altho it has elements of those. But if you read the docs
 in the Guide about it, you should get some idea what it does.)

An hour and a half ago, James Swaine wrote:
 
 Agreed, debugger and tracker don't really adequately describe
 it.  Maybe future-profiler is another option, but maybe confusing
 since we already have profiler.  (But I still think visualizer
 is best, IMHO).

(I did say that I don't know what it's doing so I was blindly
guessing...)

-- 
  ((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] [plt] Push #24961: master branch updated

2012-07-10 Thread Eli Barzilay
Yesterday, sa...@racket-lang.org wrote:
 
 6bf1415 Sam Tobin-Hochstadt sa...@racket-lang.org 2012-07-06 12:13
 :
 | Each typed module now defines a submodule named `type-decl`.
 | [...]

Assuming that you want to allow people to write code with submodules,
I think that a name like `#%type-decl' would be much better.

-- 
  ((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