[racket-dev] test-engine/racket-tests

2010-06-08 Thread Sam Tobin-Hochstadt
I've just pushed a renaming of the `test-engine' library to use
`racket' instead of `scheme' in the names. The current names are still
there for compatibility.  If anyone notices any problems with this,
let me know.

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


[racket-dev] scribble tables with centered cells

2010-06-15 Thread Sam Tobin-Hochstadt
I'd like to produce, with scribble, output similar to what this latex produces:

\begin{tabular}{|c|c|c|}
Header1  Header2  Header3
11  17  29
\end{tabular}

However, I can't seem to figure out how.  First, how can I make the
elements centered?  There doesn't seem to be a way to control the
generated column attributes - putting the 'center style in the
`table-columns' style property just wraps the *entries* in \center{},
which produces bizarre latex errors instead.  Second, how can I insert
the dividers?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Parallel Build of Collects

2010-07-05 Thread Sam Tobin-Hochstadt
On Mon, Jul 5, 2010 at 2:13 PM, Kevin Tew t...@cs.utah.edu wrote:
 Parallel build of collects is now the default option.

This breaks for me, with current master (during 'make install'):

raco setup: --- parallel build using 4 processor cores ---
/home/samth/sw/plt/collects/setup/compiled/parallel-build-worker_rkt.zo::0:
read (compiled): code compiled for version 5.0.0.5, not 5.0.0.6
/home/samth/sw/plt/collects/setup/compiled/parallel-build-worker_rkt.zo::0:
read (compiled): code compiled for version 5.0.0.5, not 5.0.0.6
KILLING WORKER 0 #(struct:exn:fail:filesystem error writing to stream
port (Broken pipe; errno=32) #continuation-mark-set)
close-input-port: expects argument of type input-port; given 0

 === context ===
/home/samth/sw/plt/collects/setup/parallel-build.rkt:220:58:
with-handlers-handler219
/home/samth/sw/plt/collects/setup/setup-unit.rkt:601:17: thunk
/home/samth/sw/plt/collects/setup/setup-go.rkt: [running body]
/home/samth/sw/plt/collects/setup/main.rkt: [running body]

I was able to fix this by doing 'raco setup -u -l setup' and then
rerunning 'make install'.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


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

2010-07-23 Thread Sam Tobin-Hochstadt
On Fri, Jul 23, 2010 at 8:19 PM, Eli Barzilay e...@barzilay.org wrote:
 Some suggested items below, if you have items, please mail me text
 that describes those that you think should be mentioned, and verify
 that the rest should not.

I feel like we should mention items that were released in v5.0, since
none of them were mentioned in that release announcement.

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


Re: [racket-dev] Can't Find a Workaround for Bug 11017 in DrRacket

2010-07-25 Thread Sam Tobin-Hochstadt
On Sun, Jul 25, 2010 at 8:27 AM, Matthew Flatt mfl...@cs.utah.edu wrote:

 It's worrying, though, that you're getting a DrRacket backtrace that
 covers cm.rkt. Files in the main installation normally should not be
 instrumented for backtraces. Does your installation have any drracket
 subdirectories of any compiled directories?

It's easy to get such a backtrace if Debugging (meaning Errortrace
Debugging) is off.  This is particularly likely to be what happened
here, since every backtrace frame is a function definition, which
rarely happens with errortrace, but always happens with the internal
Racket backtraces.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


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

2010-07-27 Thread Sam Tobin-Hochstadt
On Tue, Jul 27, 2010 at 12:14 PM, Kevin Tew t...@cs.utah.edu wrote:
 On Jul 27, Kevin Tew wrote:


 Parallel-build is somewhat behind the scenes.  I would delay talking
 about it until the next release which will include -j documentation
 and parallel rendering of docs.

Shouldn't the docs be merged to the release branch?
-- 
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 s...@cs.brown.edu 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] status of the new `racket/gui'

2010-08-02 Thread Sam Tobin-Hochstadt
On Mon, Aug 2, 2010 at 1:09 PM, Matthew Flatt mfl...@cs.utah.edu 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] Added Sierpinski example to wikipedia page

2010-08-17 Thread Sam Tobin-Hochstadt
On Mon, Aug 16, 2010 at 11:38 PM, Matthias Felleisen
matth...@ccs.neu.edu wrote:
 Some minimal surgery done.

Note that the best way to make edits like this stick is to put the
information we want on our web pages as well, and then cite it from
Wikipedia.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] a small Racket success story

2010-08-18 Thread Sam Tobin-Hochstadt
On Tue, Aug 17, 2010 at 9:21 PM, Shriram Krishnamurthi s...@cs.brown.edu 
wrote:
 we couldn't type the generator code (a bad interaction between mutation
 and occurrence typing).

In almost all cases, when TR rejects your program because of this,
your code is incorrect in the presence of threads and/or futures (and
sometimes continuations) as well.  For example, this program:

#lang typed/racket

(: x Any)
(define x #f)
(: f (Any - Void))
(define (f v) (set! x v))

(if (number? x)
;; no call to `f' here
(add1 x)
0)

won't typecheck, but you might think it should.  However, the call to
`f' can be in another thread/future, which can happen between the test
and the `add1', breaking your program.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] PLaneT Library of Iterations/Comprehensions

2010-08-18 Thread Sam Tobin-Hochstadt
On Wed, Aug 18, 2010 at 12:02 PM, Will M. Farr wmf...@gmail.com wrote:
 Hello all,

 I've been thinking for a while about putting together a PLaneT library of 
 some iteration/comprehension forms that I often use that are not found in the 
 racket core.  Right now, I have a small it-comp.plt local PLaneT package that 
 contains

 for/vector
 for/flvector
 in-flvector

Great!

 The for/... forms have the option of having a first expression that gives the 
 length of the resulting object (similar to srfi-42's vector-of-length-ec 
 form) to allow generating more efficient code:

 (for/vector ((x (in-range 3))) x) = (vector 0 1 2)
 (for/vector 3 ((x (in-range 3))) x) = (vector 0 1 2) ; but more efficiently

What does this do if the specified length is wrong?

 Alternately, if you guys want to add these to the core, I'd be happy to 
 contribute code and tests

If you prepare a patch (with tests/docs) I'll get it committed.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] RFC: Coding Guidelines

2010-08-19 Thread Sam Tobin-Hochstadt
On Tue, Aug 17, 2010 at 3:57 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
 Please comment.

I think that this:

Your first task when changing old code is to build an adequate test
suite to ensure you do not introduce new mistakes as you attempt to
improve it. Thank you for improving the world for future generations!

is too demanding.  There are enormous areas of our code that don't
have a test suite.  How comprehensive a test suite do I need before
changing slideshow?  Or scribble (which has a test suite for the
syntax, but not the language)?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] gc vs assignment

2010-08-24 Thread Sam Tobin-Hochstadt
On Tue, Aug 24, 2010 at 11:43 AM, Kevin Tew t...@cs.utah.edu wrote:
 After a garbage collection all non-nursery memory is write-protected.
 The first write to a page (16kB) , after a garbage collection, incurs the
 cost of unprotecting the page so it is writable and recording that the page
 has been written on.
 All subsequent mutations to objects in a unprotected page do not have a
 write barrier cost, until the next garbage collection run.

Does this means that the GC treats every object in a mutated page as
potentially pointing to the nursery?  That seems like a very coarse
approximation of the remembered set, but it might be worth it to get
the OS to do your write barrier for you.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] futures waiting for scheme_make_envunbox

2010-08-25 Thread Sam Tobin-Hochstadt
While trying to use futures to parallelize a simple piece of code, I
was able to remove all of the waiting except for this:

future: 3 waiting for runtime at 1282743524205.783936: [scheme_make_envunbox]

which happens continuously.  What causes this function to be invoked,
and how can I eliminate it?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Problem with GC or with my machine?

2010-09-03 Thread Sam Tobin-Hochstadt
I'm pretty sure that this is a bug in `unsafe-set-box*!'.  The
following version of que.ss doesn't have the problem, but adding the
* results in the segfault.

On Fri, Sep 3, 2010 at 6:12 PM, Hari Prashanth krh...@ccs.neu.edu wrote:
 Yes the problem goes away once I turn off the optimizer... I have attached
 the code.

 #lang typed/racket
 (require que.ss)
 (head (queue 1 2 3 4))


 - Original Message -
 From: Vincent St-Amour stamo...@ccs.neu.edu
 To: Matthew Flatt mfl...@cs.utah.edu
 Cc: Hari Prashanth krh...@ccs.neu.edu, dev dev@racket-lang.org
 Sent: Friday, September 3, 2010 11:39:50 AM GMT -05:00 US/Canada Eastern
 Subject: Re: [racket-dev] Problem with GC or with my machine?

 At Fri, 3 Sep 2010 09:34:10 -0600,
 Matthew Flatt wrote:
 Thanks for sending the code. I see that it's using Typed Racket with
 #:optimize. Maybe Vincent and Sam should take a look to make sure that
 the optimizer isn't generating incorrect unsafe code?

 Yes, please send us the code.

 First thing you should try, though, is turn off the optimizer and see
 if the problem goes away.

 Vincent

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




-- 
sam th
sa...@ccs.neu.edu


que.ss
Description: Binary data
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] typed/scheme n00b question

2010-09-07 Thread Sam Tobin-Hochstadt
On Tue, Sep 7, 2010 at 8:04 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:

 You can't use that type in `require/typed', though, since the contract
 library doesn't accept `case-' contracts like that.

 The like that part is that two different arms of the case- would
 have the same arity?

Right.  Of course, even if the contract library accepted such
contracts when it could distinguish based on the first-order portions
which case to take, that still wouldn't cover all of what TR accepts.
More work is needed (on my part) to characterize it precisely, though.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] certificates and phases question

2010-09-08 Thread Sam Tobin-Hochstadt
I'm puzzled by the behavior of the below program.  In particular,
`get' doesn't work, but `get2' does, even though the only difference
is the phase at which they're executed.  `get' produces the
certificate error:

  compile: access from an uncertified context to unexported variable
from module: 'm1 in: x

Is there a way around this?  Working at phase 1 has become inconvenient for me.

#lang racket/load

(module m1 racket
  (define x 1)
  (define-syntax (m stx) #'(list x))
  (provide m))

(module m2 racket
  (require 'm1 (for-syntax syntax/parse))
  (define-syntax (get stx)
(syntax-parse stx
  [(_ nm)
   (with-syntax ([(app lst val) (local-expand #'(m) 'expression null)])
 #'(define nm #'val))]))
  (define-syntax (get2 stx)
(syntax-parse stx
  [(_ nm)
   (with-syntax ([(app lst val) (local-expand #'(m) 'expression null)])
 #'(define-for-syntax nm #'val))]))
  (get2 z))

(require 'm2)


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


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

2010-09-09 Thread Sam Tobin-Hochstadt
On Mon, Aug 23, 2010 at 11:02 AM, Will M. Farr wmf...@gmail.com wrote:
 On Aug 23, 2010, at 7:40 AM, Matthew Flatt wrote:

 Maybe you want to thread the vector index through using `for/fold'
 instead of drawing the index from a sequence. The expansion could
 insert enough `#:when' clauses to compare the index to the length
 before each nested iteration.


 This is exactly what I have decided to do.  New patches attached.  Let me 
 know if you want me to combine them into one.

I've now pushed these patches, with a few minor edits.  Thanks Will!
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] rename + changes = bad? (was: Fwd: [plt] Push #21110: master branch updated)

2010-09-17 Thread Sam Tobin-Hochstadt
On Fri, Sep 17, 2010 at 1:36 PM, John Clements
cleme...@brinckerhoff.org wrote:
 Oof... it looks like doing a rename plus a few changes pretty effectively 
 hides those changes, though I can dig them out with 'git annotate'.  Do we 
 have a policy (or should we have) a policy stating that you shouldn't put a 
 rename and modifications to that file in the same commit?

I believe that this is an issue with Eli's email formatting script,
and not with git itself (the github diff is fine:
http://github.com/plt/racket/commit/a095ebc326aa35b5b19f314080855db5d55ed49b
).
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] the racket machine

2010-09-24 Thread Sam Tobin-Hochstadt
On Fri, Sep 24, 2010 at 3:48 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I know there are a bunch of people working
 on things at that level, so if you have a chance to take a look at
 this, you might find it useful as you muck about down there (there are
 examples and things :).

Cool!

Is it too much to ask for this to eventually become part of the
documentation?  Having the paper on the class system as part of the
docs is nice already, and this would be even better, since this part
of the system is currently much less documented.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] slideshow not hiding KDE panel

2010-09-30 Thread Sam Tobin-Hochstadt
On Thu, Sep 30, 2010 at 6:47 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Thu, 30 Sep 2010 20:20:07 -0400, Faré wrote:
 I'm trying to use slideshow on Linux, and I find it annoying that it
 fails to be on top of the KDE panel.

 I admit I know next to nothing about the X protocol, and can't help
 much with this issue, but I hope someone who does can do something
 about it. For the record, samth says he has the exact same problem
 with the GNOME panel.

 I think I could fix this in GRacket2 if I could figure out how to
 provoke the bad behavior on my machine. I'm running Ubuntu 10, and
 Slideshow works. I tried installing and running Maximus, but Slideshow
 still worked. (Robby showed me bad behavior on his netbook, and I
 thought it had something to do with Maximus, but it's apparently not as
 simple as that.)

 Does anyone know what I can do to trigger the problem?

This happens for me always in slideshow on my laptop in both GR1 and
GR2.  I'm running Ubuntu 10.04, screen resolution 1440x1050, with
panels on the top and bottom of the screen (as is usual for Gnome).  I
can provide any other data as desired.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] flonum vs. inexact-real

2010-10-03 Thread Sam Tobin-Hochstadt
On Sun, Oct 3, 2010 at 10:49 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 Would it make sense for typed scheme to hook up with check syntax to
 show the type of subexpressions (say when mousing over parens or
 something)? I'm not sure if that's too late in general, but it seems
 like we're getting the point where we want to give programmers
 interactive feedback, at least about numbers.

I think this is a good idea (made even better if we eventually have
Check Syntax running online).  A protocol like 'disappeared-binding
would work well for Typed Racket here.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] flonum vs. inexact-real

2010-10-03 Thread Sam Tobin-Hochstadt
On Sun, Oct 3, 2010 at 10:42 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 The `flonum?' predicate would be the only new predicate for now. The
 `inexact-integer?' predicate would imply `flonum?', but not vice-versa.

I assume you mean `inexact-real?' here.

 The flonum operators (with names that start `fl' or `unsafe-fl') would
 require and produce flonums, only.

I worry that this is a hazard for existing code.  For example, this
plain Racket code:

(define/contract (f x)
  (inexact-real? . - . inexact-real?)
  (unsafe-fl+ x 3.2))

goes from being a safe optimization to potentially segfaulting.
Similarly (but less bad), this Typed Racket code:

(: f : Any - Float)
(define (f x)
  (if (inexact-real? x)
  (fl+ x 3.2)
  0.0))

which currently typechecks would now be a type error.

I don't know how much we should worry about this, but we should
probably worry at least a little.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Bug? identifier `make-Int' not included in nested require spec.

2010-10-04 Thread Sam Tobin-Hochstadt
This is a known bug with the interaction of `struct' and
`require/typed'.  `define-struct' should work here.

On Mon, Oct 4, 2010 at 7:11 PM, Hari Prashanth krh...@ccs.neu.edu wrote:
 Am I doing some thing wrong or is it a bug?

 #lang racket/load

 (module UNTYPED racket/base
  (struct Int (elem))

  (provide (struct-out Int)))

 (module TYPED typed/racket
  (require/typed 'UNTYPED
                 [struct Int ([elem  : Integer])]))

 I get the following error

 only-in: identifier `make-Int' not included in nested require spec in: (quote 
 UNTYPED)

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




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


Re: [racket-dev] #true and #false

2010-10-10 Thread Sam Tobin-Hochstadt
On Sun, Oct 10, 2010 at 9:39 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 Any other opinions?

Personally, I find #true and #false visually ugly, and I also agree
with Eli's feelings on terseness.  I don't think I've ever
accidentally confused #t and #f personally, so I'm not in favor of
changing outside of the student languages.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] fuzz testing the bytecode reader

2010-10-19 Thread Sam Tobin-Hochstadt
Earlier today, I wrote a simple fuzz tester for bytecode reading and
evaluation. The code is attached.  It takes an existing zo file, reads
it in as bytes, randomly flips some small portion of the bits (0.1%),
and then `read's and `eval's the results.  This extremely quickly
finds segfaults in Racket.  Here's a deterministic segfault with git
HEAD:

[sa...@hermes:~/tmp] racket fuzz.rkt -s  1046626898 -f
~/sw/plt/collects/redex/tests/compiled/lw-test-util_rkt.zo
DrDr Ignore! random-seed 1046626898
name: /home/samth/sw/plt/collects/redex/tests/compiled/lw-test-util_rkt.zo
SIGSEGV MAPERR si_code 1 fault on addr 0x616ec898
Aborted

Here's how to traverse a bunch of files to find a segfault:
 racket fuzz.rkt -d ~/sw/plt/collects/redex/

I'll be adding this to the tree in the stress tests soon.

Thanks to Robby for advice on the code, and to Lars Hansen for the idea.
-- 
sam th
sa...@ccs.neu.edu


fuzz.rkt
Description: Binary data
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Grr... why can't I pull?

2010-10-19 Thread Sam Tobin-Hochstadt
On Tue, Oct 19, 2010 at 2:28 PM, John Clements
cleme...@brinckerhoff.org wrote:
 Am I doing something stupid, here?

I'm having the same problem, and I'm at the same conference as John,
so I suspect that's the issue.  I can pull fine from my machine at
Northeastern.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Release for v5.0.2 has begun

2010-10-25 Thread Sam Tobin-Hochstadt
On Mon, Oct 25, 2010 at 10:06 AM, Doug Williams
m.douglas.willi...@gmail.com wrote:

   (case- (-r ((r random-source?)
     (a real?)
     (b (/c a)))
    real?)
   (-r ((a real?)
     (b (/c a)))
    real?)))

 I'm not sure that one can be easily rewritten in the current contract
 system. [I think I would have to move the b  a constraint into the code
 itself in the current contract system. Or, change the argument order and
 break backward compatibility.]

This can be written as a dependent contract, but with worse error messages.

(-i ([r/a (or/c random-source? real?)] [a/b real?])
   ([b/opt (r/a a/b) (if (random-source? r/a) (/c a/b) none/c)])
   [result real?])

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


Re: [racket-dev] building docs, compile collects

2010-10-25 Thread Sam Tobin-Hochstadt
On Mon, Oct 25, 2010 at 4:54 PM, Jon Rafkind rafk...@cs.utah.edu wrote:

 My motivation is to quickly test changes to core libraries (like
 collects/racket) after doing a 'git pull --rebase'.

Given that this is your motivation, why not just use:

 'raco setup -D'

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


Re: [racket-dev] building docs, compile collects

2010-10-25 Thread Sam Tobin-Hochstadt
On Mon, Oct 25, 2010 at 5:15 PM, Jon Rafkind rafk...@cs.utah.edu wrote:
 On 10/25/2010 03:06 PM, Sam Tobin-Hochstadt wrote:
 On Mon, Oct 25, 2010 at 4:54 PM, Jon Rafkind rafk...@cs.utah.edu wrote:
 My motivation is to quickly test changes to core libraries (like
 collects/racket) after doing a 'git pull --rebase'.
 Given that this is your motivation, why not just use:

  'raco setup -D'

 which skips the documentation altogether?
 The issue is building collects that I don't care about nor do the tests
 exercise (like algol60, or all of drracket). In the event that there is
 some subtle issue between my changes and a collect that I don't want to
 build then DrDr will find it.

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


Re: [racket-dev] Web language

2010-10-26 Thread Sam Tobin-Hochstadt
On Tue, Oct 26, 2010 at 10:01 AM, Eli Barzilay e...@barzilay.org wrote:

 OK, I changed it -- but here are some of the points that made me think
 that `html' is the right choice:

Here's one more (and IMHO more significant) point: XHTML is on the way
out as a web technology.  In particular, HTML5 is treating the whole
HTML-in-XML idea as mostly failed and continuing without paying it
much attention.  For more details, see:
  http://dev.w3.org/html5/html4-differences/#syntax
and
  http://wiki.whatwg.org/wiki/HTML_vs._XHTML
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Web language

2010-10-26 Thread Sam Tobin-Hochstadt
On Tue, Oct 26, 2010 at 10:49 AM, Eli Barzilay e...@barzilay.org wrote:
 5 minutes ago, Sam Tobin-Hochstadt wrote:

 If you're planning to serve things under the text/html mime type
 (which racket-lang.org currently does, for example) then it should
 definitely be called `html'.

 Do you mean the Content-Type header?  I understood at some point
 that this was a valid, and it sounds like this quote (from the second
 link you posted):

  Note that XHTML 1.0 previously defined that documents adhering to
  the compatibility guidelines were allowed to be served as text/html,
  but HTML 5 now defines that such documents are HTML, not XHTML.

 Keeps it valid -- except that the proper label for this is now HTML,
 and possibly affects parsing in some ways that I'd be insane to rely
 on.  Right?

Basically, (a) you should use this mime type, since 'application/xml'
is liable to behave badly in some browsers and (b) this means that
it's HTML (and always has been), and (c) HTML5 will specify the
rendering behavior of your page if you make mistakes like forgetting
to close tags.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Pre-Release Checklist for v5.0.2, second call

2010-10-26 Thread Sam Tobin-Hochstadt
On Mon, Oct 25, 2010 at 1:46 PM, Ryan Culpepper ry...@ccs.neu.edu wrote:
 * Sam Tobin-Hochstadt sa...@ccs.neu.edu
  - Match Tests

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


Re: [racket-dev] [plt] Push #21356: gr2 branch updated

2010-10-27 Thread Sam Tobin-Hochstadt
 mflatt has updated `gr2' from 5633895cf0 to 2b2de4ece6.
  http://git.racket-lang.org/plt/5633895cf0..2b2de4ece6

So, I see from this commit that you're planning to move the version
number to 5.5.  I think this is a mistake.  We've been trying to be
more conventional in our project managment, and I think we should
stick with just incrementing the version.  There's no reason that 5.1
can't be a significant improvement over 5.0, and skipping versions
just adds potential for confusion.

Other than that, yay for GR2!
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] [plt] Push #21356: gr2 branch updated

2010-10-27 Thread Sam Tobin-Hochstadt
On Wed, Oct 27, 2010 at 4:22 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 Is there no conventional precedent for this?

There are several numbering schemes in use in projects that I know about:

1. major.minor.patch, as with us.  The Linux Kernel, GCC, Subversion,
Git, and many many other projects use this.
2. major.minor with no patch revisions.  FreeBSD, KDE, Emacs, and
other projects do this.
3. major.even-minor. with odd-minor indicating development releases.
Gnome and various other projects use this.

None of these in my experience have incremented by more than +1 (or +2
in case 3), even for significant changes. For example, GCC 4.5 added
whole-program link time optimization and a plugin system (both very
significant changes) over version 4.4.

An additional thought: what if we make a similarly-significant change
after 5.8?  What will the new number be?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] 5.0.2 changelog

2010-10-28 Thread Sam Tobin-Hochstadt
On Thu, Oct 28, 2010 at 1:40 AM, Jon Rafkind rafk...@cs.utah.edu wrote:

 Author: Sam Tobin-Hochstadt sa...@racket-lang.org
    Faster loading of TR files?

Not worth mentioning.

You do have the optimizer-by-default in the changelog, right?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] 5.0.2 changelog

2010-10-28 Thread Sam Tobin-Hochstadt
On Thu, Oct 28, 2010 at 12:29 PM, Eli Barzilay e...@barzilay.org wrote:
 Three hours ago, Matthias Felleisen wrote:

 On Oct 28, 2010, at 8:34 AM, Matthew Flatt wrote:
 
  None seem especially worth mentioning, but the internal-definition
  change could be mentioned if we need more to Say:
 
  * The `when', `unless', `cond', `case', and `match' forms (in
    `racket/base' and derived languages) now allow immediate
    internal definitions.

 Just for the record: allowing internal definitions all over the
 place and mixing them properly with expressions has been one of the
 best small changes of the decade.

 BTW, there's another one that I think should get the same: `begin0'.

That would be weird.  What do these do?

(begin0 (define x 1) x)
(let ([x 0]) (begin0 x (define x 1))

On a different note, is it still important to have `begin0' as a core form?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Scribble Racket Code with Here Strings

2010-10-30 Thread Sam Tobin-Hochstadt
On Sat, Oct 30, 2010 at 11:56 AM, Eli Barzilay e...@barzilay.org wrote:

 That is, the here string has been rendered as a normal string with lots of
 whitespace after.

 There's lots of ways to create strings and the documentation system
 can't tell them apart -- so it rendered it as a string, but then
 noticed that the other pieces of code are a few lines later.

Isn't that a sign that we need a syntax property for here-strings,
similar to 'paren-shape?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] A Workshop on Racket

2010-11-01 Thread Sam Tobin-Hochstadt
PLT holds annual internal workshops where we synchronize our
efforts. Based on discussions with members of the community, we are
considering holding an open workshop for our entire user population.

Depending on interest, the workshop is likely to feature presentations by:

 * Matthew Flatt on the future of Racket
 * Matthias Felleisen on the future of the HtDP Curriculum
 * Robby Findler on new developments in DrRacket

as well as tutorials by:

 * Ryan Culpepper on creating Domain-Specific Languages
 * Jay McCarthy on Web Development with Racket
 * Shriram Krishnamurthi on teaching algorithmic content in an
   accelerated HtDP/2e course

Also we are hoping that some of you might be interested in presenting
ideas, requests, experiences, and plans that others may be interested in.

Participants will have to pay for their travel, lodging and (most)
meals, while we will try to pick up the tab for other workshop expenses.

It would greatly help us if anyone interested in attending such a
workshop could point your browser to

  http://www.surveymonkey.com/s/Y8CP8G8

and fill out our quick survey. Please do so even if we have informally
polled you before on some of these questions.  Filling out the survey
doesn't commit you to anything.

If you have any other comments, questions, or feedback, please send
them to me directly.

For the organizers,
Sam Tobin-Hochstadt
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] try the GRacket2 branch

2010-11-05 Thread Sam Tobin-Hochstadt
On Thu, Oct 28, 2010 at 2:25 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 The git repository now includes a gr2 branch for the new
 implementation of `racket/gui', which we've been informally calling
 GRacket2.

What are the plans for merging between the master and gr2 branches?
Right now, I can no longer use gr2 most of the time since it needs
fixes to the macro-stepper, but those are only available on 'master'.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Simple loop checking in beginner?

2010-11-10 Thread Sam Tobin-Hochstadt
On Wed, Nov 10, 2010 at 10:40 AM, namekuseijin namekusei...@gmail.com wrote:
 On Wed, Nov 10, 2010 at 12:13 AM, John Clements
 cleme...@brinckerhoff.org wrote:
 ;; NOW I'M A STUDENT:

 ;; only-long-strings : (listof string) - (listof string)
 ;; return a list containing the strings longer than 2 chars
 (define/noloop (only-long-strings l)
  (cond [(empty? l) empty]
        [else (cond [( 2 (string-length (first l)))
                     (cons (first l)
                           (only-long-strings (rest l)))]
                    [else (only-long-strings l)])]))

 gosh, students do suck.  I guess you teach them to use cond because
 it's a generalized if.  But then they proceed to use it just like if:
 always two conditions per (verbose) cond! :p

I disagree - the outer `cond' has 2 clauses because it it processing a
data definition - (listof string) - which has 2 clauses.  The second
`cond' clause, which processes conses, has a conditional as well, but
there's certainly nothing wrong with having the structure of your
program match the structure of your data, especially not for HtDP
programs.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] OT: stump misunderstands Scheme?

2010-11-16 Thread Sam Tobin-Hochstadt
On Tue, Nov 16, 2010 at 5:22 PM, Shriram Krishnamurthi s...@cs.brown.edu 
wrote:
 You know, it's not inconceivable such a thing could happen if you had
 a PURELY syntactic *interpreter*.

 I remember when I got to Brown, they were using one of those weirdo
 Scheme interpreters, and had come to conclusions about the semantics
 of Scheme on the basis of its behavior.  Things like you could run

 ('(lambda (x) x) 3)

 and it would evaluate to 3 because of the way the interpreter was structured.

 Now if Aaron ran one of those to test his code...

I'm pretty sure that this is also how the original Lisp interpreter
from McCarthy's paper worked.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] [racket] newbie: foreign C structure definition question

2010-11-16 Thread Sam Tobin-Hochstadt
[redirected to d...@]

On Tue, Nov 16, 2010 at 11:28 PM, Eli Barzilay e...@barzilay.org wrote:
 20 minutes ago, Jay McCarthy wrote:

 I've complained about this before, which is why I was able to
 quickly answer your question. I don't endorse the current behavior.

 (Just a reminder: this is something that libffi doesn't have AFAICT.)

Python's 'ctypes' library, which also uses libffi under the hood, has arrays:
  http://docs.python.org/library/ctypes.html#arrays
and also unions, which we don't have:
  http://docs.python.org/library/ctypes.html#structures-and-unions

So it seems like this should be possible, and maybe we can even use their code.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] [racket] newbie: foreign C structure definition question

2010-11-17 Thread Sam Tobin-Hochstadt
On Wed, Nov 17, 2010 at 2:12 AM, Eli Barzilay e...@barzilay.org wrote:
 Two hours ago, Sam Tobin-Hochstadt wrote:

 Python's 'ctypes' library, which also uses libffi under the hood, has arrays:
   http://docs.python.org/library/ctypes.html#arrays
 and also unions, which we don't have:
   http://docs.python.org/library/ctypes.html#structures-and-unions

 So it seems like this should be possible, and maybe we can even use
 their code.

 They guy who did ctypes knows how to deal with the libffi internals.
 (He did the msvc version of the code.)

 If you look through the libffi documentation you'll see no mention of
 arrays, and an explicit mention of no special support for unions.

I understand that, but ctypes proves 3 things
 - it can be done
 - there is code to read and people to ask to figure out how
 - Python(!) has a nicer FFI than us for this.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] TR - no source locations?

2010-11-20 Thread Sam Tobin-Hochstadt
There are a lot of things you could mean by Typed Racket doesn't
preserve source locations.  Some of them TR definitely preserves
source locations, and some are hard cases where TR tries but doesn't
always succeed.  So I am also interested in an example.

On Sat, Nov 20, 2010 at 1:55 PM, Carl Eastlund c...@ccs.neu.edu wrote:
 Do you have a sample program where Racket preserves source locations
 and Typed Racket doesn't?

 Carl Eastlund

 On Sat, Nov 20, 2010 at 1:51 PM, John Clements
 cleme...@brinckerhoff.org wrote:
 It appears to me that TR does not preserve source locations, which makes 
 testing extremely painful
 (which test failed? Who knows.) I'm hoping that I'm just missing something 
 obvious, here. I'm also in
 the market for obvious workarounds. Apologies if this is a FAQ; I did 
 actually google for the answer.

 John




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


Re: [racket-dev] TR - no source locations?

2010-11-26 Thread Sam Tobin-Hochstadt
On Fri, Nov 26, 2010 at 5:26 AM, Noel Welsh noelwe...@gmail.com wrote:
 On Tue, Nov 23, 2010 at 6:18 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 What's happening here is that the typed wrapper in `typed/rackunit' is
 treating `check-equal?' as a function, but it's really an identifier
 macro that inserts source locations when used in application position.
  This makes it easy to write a typed wrapper, but it has the drawbacks
 you see. Probably the solution is to write a better wrapper in
 `typed/rackunit', but that might be hard without integrating with the
 internals of Rackunit.

 How far along is interop for macros in Typed Racket? Would I have to
 maintain typed and untyped version of Rackunit to do things
 'properly'.

The right thing to do for `check-equal?' etc is to have versions that
take a syntax object to use as the source location, and then TR could
use them.  I think that in general it's good to provide such versions
for macros where the source location is important to support expanding
into those macros.

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


Re: [racket-dev] Hacking on the collects

2010-12-06 Thread Sam Tobin-Hochstadt
On Mon, Dec 6, 2010 at 12:04 PM, Jakub Piotr Cłapa jpc...@zenburn.net wrote:
 I added support for secure websockets to net/websocket/client and now I am
 wondering how I should make such changes in th future to easily integrate
 them back into racket?

 What I have tried:
 1. Fork racket on github
 2. Make a local copy
 3. Compile everything fro scratch
 4. Wait and awful lot of time
 4. Change the file in collects
 5. Run make install
 6. Wait another awful lot of time for raco setup to recomplie everything
 7. Test the changes
 8. I was planning to create a pull request on github

 Is there a easier/faster way? Or should I just develop in the live
 collects tree and then endure the raco setup once for final testing?

Here are two things that I do:

(a) hack on the live collects
(b) just rerun 'raco setup' on the relevant collections (it takes
collection arguments on the command line)
(c) use the -D argument to 'setup' to skip rebuilding the documentation
(d) sometime, I don't rerun 'raco setup' at all, I just rely on
running from source.  This is slower to run, but avoid the setup time.

Of course, you should run setup on the whole tree before requesting a
pull or submitting a patch, but skipping the intermediate slowness
helps a lot.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Hacking on the collects

2010-12-06 Thread Sam Tobin-Hochstadt
On Mon, Dec 6, 2010 at 12:16 PM, Jay McCarthy jay.mccar...@gmail.com wrote:

 If you do a pull request on github, it will not be useful because github is
 a mirror and I'll just need to get the patch some other way anyways. I'd
 rather you sent the patch directly to me.

This isn't quite right.  As Eli explained (I think on this list), it's
easy to merge from a separate github repository.  I find it easier
than fiddling with the git patch management commands.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


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

2010-12-10 Thread Sam Tobin-Hochstadt
On Fri, Dec 10, 2010 at 8:26 AM, Casey Klein
clkl...@eecs.northwestern.edu wrote:
 On Fri, Dec 10, 2010 at 7:00 AM, Eli Barzilay e...@barzilay.org wrote:

 As for a suggestion, I don't have anything concrete (and I don't have
 nearly enough contract experience to say something concrete) -- but in
 general I prefer to see those important bits first, and the vague
 human text later.


 This organization was my goal in suggesting that we tack an
 explanation onto the old message. I was imagining something like this:

 /Users/clklein/tmp/contract-violator.rkt:9.17:
  (file /Users/clklein/tmp/contract-violator.rkt)
  broke the contract (- any/c any/c any/c) on #:equiv argument of
 test--; expected a procedure that accepts 2 mandatory arguments
 without any keywords, given: 1. Possible fixes include changing (file
 /Users/clklein/tmp/contract-violator.rkt) and changing the contract.

I like the idea of better error messages, and in that spirit, I
suggest: newlines.

For example:

/Users/clklein/tmp/contract-violator.rkt:9.17: (file
/Users/clklein/tmp/contract-violator.rkt) broke the contract (- any/c
any/c any/c) on #:equiv argument of test--:
   Expected: a procedure that accepts 2 mandatory arguments without
any keywords.
   Given: 1.
   Possible fixes include changing (file
/Users/clklein/tmp/contract-violator.rkt) and changing the contract.

For an effective use of text formatting in error messages, the GHC
type error messages are good examples.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] (round), etc. in Typed Racket

2010-12-11 Thread Sam Tobin-Hochstadt
On Sat, Dec 11, 2010 at 9:47 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 This seems like an unfortunate naming discrepancy.

I agree.  I think the solution is to change Racket, however.  From the
perspective of the type system, inexact integers are useless - they
have no closure properties, don't obey various laws we'd like the
integers to obey, etc.

Changing Racket is tricky, but I think using the `Integer' type for
something useless (it's not even currently represented in the TR type
system) would be a mistake.


 Robby

 On Sat, Dec 11, 2010 at 7:52 PM, Vincent St-Amour stamo...@ccs.neu.edu 
 wrote:
 At Sat, 11 Dec 2010 18:35:17 -0700,
 Petey Aldous wrote:
 I've discovered what may be a bug in the type system of Typed Racket. The
 functions that round - (round), (truncate), (ceiling), etc. are typed as
 Real, not Integer; however, the result of (integer? (round (* 10e15
 (random is consistently true - and the same holds for the other rounding
 functions.

 Typed Racket's Integer type corresponds to racket's exact integers
 (exact-integer?, not integer?).

 integer? can return true for floating point numbers:
 (integer? 1.0) - #t
 but exact-integer? cannot.

 The types for round, truncate, etc. take this into account. For
 instance, if you round an exact rational, the type of the result will
 be Integer, whereas if you round a floating point number, you get a
 Float back.

 Is this intentional? If so, why? If it is (or even if it isn't), how can I
 transform the result of (random) to an Integer?

 You can use inexact-exact on the result of round.

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

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



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


Re: [racket-dev] (round), etc. in Typed Racket

2010-12-12 Thread Sam Tobin-Hochstadt
On Sat, Dec 11, 2010 at 10:53 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:

 Changing Racket is tricky, but I think using the `Integer' type for
 something useless (it's not even currently represented in the TR type
 system) would be a mistake.

 Well, the change to TR would be to change Integer to ExactInteger
 (or similar) presumably, not to add a useless type.

I think not having an `Integer' type would be just as bad.

Given that (integer? 3.0) = #t, I think there will be an inevitable
discrepancy between what people expect and what the type system does.
One of these definitions has to not type check:

(: x : Integer)
(define x 1)

(: f : Integer - Integer)
(define (f x) (add1 x))

(: g : Any - Integer)
(define (g x) (assert x integer?))

You're suggesting the first one fail, because `Integer' would go away.
 Right now only `g' fails.  Adding an `Integer' type that corresponds
to `integer?' would make `f' fail.  My feeling is that the fewest
people will run into `g', and that it's therefore the right choice,
since there will be a FAQ about this regardless.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] spam planet bug reports

2010-12-18 Thread Sam Tobin-Hochstadt
On Sat, Dec 18, 2010 at 9:02 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:

 So I'm guessing that this means that they are serious about spamming
 planet (why?!).

PLaneT is result #9 for google (w/ no cookies) for the word planet.
Thus I would guess that having links from there to your spam web page
greatly increases its google rank, which is what the spammers are
after. No one buys Cialis after seeing it on planet -- they want
people who search for buy cialis online to find them.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] sudo make install

2011-01-03 Thread Sam Tobin-Hochstadt
On Mon, Jan 3, 2011 at 2:51 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:

 Or maybe there is another possible solution that involves changing how
 the distribution and or the docs build works?

I think the conventional solution is for `make install' to do much
less work than it current does.  In normal Make-built software,
`make' does all of the compilation, and `make install' just does the
copying.  That way, `make install' wouldn't be doing things like
reading preferences and creating the '.racket' directory.

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


Re: [racket-dev] A disassembler for Racket

2011-01-05 Thread Sam Tobin-Hochstadt
On Wed, Jan 5, 2011 at 5:39 PM, Neil Van Dyke n...@neilvandyke.org wrote:
 Sam Tobin-Hochstadt wrote at 01/05/2011 05:28 PM:

 I've been on-and-off working on a disassembler for jitted x86 functions in
 Racket,

 This is great, Sam.  Thank you.

 Your problem now is that, while some CL-type people will like to see
 assembly dumps, they will grumble about any missed optimizations. :)

Well, the first step is seeing the problem ...

More seriously, the reason that I'm interested in this is that with
things like the TR optimizer, understanding the behavior of Racket at
the assembly level is all the more important.  Hopefully this will
lead to improvements at both the optimizer and the JIT level.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Git

2011-01-07 Thread Sam Tobin-Hochstadt
On Fri, Jan 7, 2011 at 10:42 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 Another question: what if I commit something just for the purpose of
 moving to another machine and I don't want that commit to show up in
 the main repository? Is that possible? (My tree is currently in that
 state; it is one commit ahead of plt/master but that commit message is
 a lie-- I've just started to do that job; ordinarily I'd do git commit
 --amend to add more stuff to it, but now I'm worried about that.)

If you commit something to your own private repository, you can then
rebase relative to plt/master, and then the bogus commit won't show up
(or rather, whatever the result of the rebase is will show up, which
can differ arbitrarily).

Once you commit to the main repository, though, history-rewriting is disallowed.

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


Re: [racket-dev] JFYI: Apple's Mac App store now online

2011-01-11 Thread Sam Tobin-Hochstadt
On Tue, Jan 11, 2011 at 12:52 PM, John Clements
cleme...@brinckerhoff.org wrote:
 Anyhow, I wouldn't be surprised if in the next few years users start asking 
 why DrRacket isn't available through the App store.

I expect that, like the iOS App Store, distribution through the App
store is incompatible with DrRacket's LGPL license.  See, for example:
  http://www.enternet.org/3543575/vlc-app-removed-from-app-store/

Also, you have to pay Apple $99 a year.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Pre-Release Checklist for v5.1, second call

2011-02-04 Thread Sam Tobin-Hochstadt
On Thu, Feb 3, 2011 at 9:08 PM, Ryan Culpepper ry...@ccs.neu.edu wrote:

 * Sam Tobin-Hochstadt sa...@ccs.neu.edu
  - Match Tests

Done.

-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] drafting the v5.1 release announcement

2011-02-09 Thread Sam Tobin-Hochstadt
On Wed, Feb 9, 2011 at 4:28 PM, Jon Rafkind rafk...@cs.utah.edu wrote:
 Here are some items I pulled from the commit log

I'm not sure how you selected these, but some of them aren't even in
the 5.1 release (such as Vincent's changes).

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


Re: [racket-dev] drafting the v5.1 release announcement

2011-02-09 Thread Sam Tobin-Hochstadt
On Wed, Feb 9, 2011 at 3:37 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 Let's get the ball rolling on the release announcement.

* Images created with `2htdp/image' now automatically serialize to PNG
files when asked.  This means that image examples now render
automatically when used in Scribble documentation.

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


Re: [racket-dev] Latex files

2011-02-18 Thread Sam Tobin-Hochstadt
On Fri, Feb 18, 2011 at 9:42 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 It wouldn't hurt to include a little script that downloads the correct
 versions of the files from racket-lang.org somewhere and puts them
 where they are currently, tho, no?

At least for the JFP file, it's pretty clearly a copyright violation
for us to distribute the file at all -- on the web page or elsewhere.
We'd have to download it from the CUP site.

For the ACM file, I emailed the contact email for the style file about
the license.

sam th

 Robby

 On Fri, Feb 18, 2011 at 7:56 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 Sorry.

 I think we should remove the .cls files and say that users have to put
 them somewhere that Latex will find them (e.g., set `TEXINPUTS').

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


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



-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Packaging

2011-02-18 Thread Sam Tobin-Hochstadt
On Fri, Feb 18, 2011 at 8:17 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 One more comment: one of PLaneT's design goals what that if you have a
 working system and you install a new planet package, then you didn't
 break any of the working parts from before. The new system doesn't
 seem to have that as a design goal anymore (I noticed automatic
 upgrades and freezing being an explicit operation but there may be
 other places).

 Do you have a rationale for deviating from this seemingly nice property?

I think (from my experience working on this problem in the Fortress
context) that this property isn't as nice as it seems to start with.
It has a few important problems:

1. It can't possible be true in general, since two packages or
(especially) two versions of the same package can contend for the same
system resource (a file, a database, a network port, a parameter, a
bit of Racket global state, etc).

2. It's in conflict with two other important goals -- upgrading
packages (to remove bugs, add features, etc) and reducing resource
usage (disk, memory, etc).

3. Often, sharing state in a package/library is very important.  For
example, generative structs have to be generated only once to be
properly shared.  With the planet policy, it's all to easy to install
two packages, both of which require (planet foo/bar), get different
instantiations of foo/bar, and have the two packages be subtly
incompatible (it's even worse when the incompatibility is in some
shared resource other than generative structs, like shared files).
We've had this problem with planet libraries, I believe.

I believe the right solution is to allow individual library authors to
specify that they want the planet policy, or some other policy, to be
applied to particular dependencies, without making it the default.


 Robby

 On Fri, Feb 18, 2011 at 3:21 PM, Jay McCarthy jay.mccar...@gmail.com wrote:
 You may recall from the meeting over the summer that I promised a
 packaging Christmas present to Racket. I'm over a month late, but here
 it is:

 http://faculty.cs.byu.edu/~jay/tmp/pkgs/spec.html

 I lay out some goals for the new packaging system and make a concrete 
 proposal.

 Please share your feedback so I can direct my efforts better.

 Jay

 --
 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
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


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



-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Latex files

2011-02-19 Thread Sam Tobin-Hochstadt
On Sat, Feb 19, 2011 at 8:22 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Fri, 18 Feb 2011 22:44:54 -0500, Sam Tobin-Hochstadt wrote:
 At least for the JFP file, it's pretty clearly a copyright violation
 for us to distribute the file at all -- on the web page or elsewhere.
 We'd have to download it from the CUP site.

 For the ACM file, I emailed the contact email for the style file about
 the license.

 Did you e-mail anyone at JFP, yet?

I have not, although one of the JFP editors is on this list :)

 Looking again, I can imagine reading the jfp.cls file Robby's way.
 The intent of use may be produce a document, and the overall intent
 might permit redistribution of jfp.cls to others who are producing
 JFP documents.

That's certainly possible, but redistributing the file requires the
permission of the copyright holder, and the tone of the notice
suggests that they aren't very flexible about these things.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Latex files

2011-02-19 Thread Sam Tobin-Hochstadt
On Sat, Feb 19, 2011 at 9:50 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 Does it seem okay to provide a script that downloads the .cls file
 from the jfp website and tuck it into the (already installed)
 distribution (presumably in a user-specific place)?

Yes, this is a well-known workaround in these sorts of situations.
It's used for packages that install Flash on lots of Linux
distributions, for example.

I think it would probably be sufficient to provide a .cls file that
errors with a message indicating where to go to get the file, although
the script you describe would certainly be a helpful addition.

 If so, then we can at least set up a drdr test that does that and
 checks to see if scribble produces exactly the same .pdf file for some
 well known scribble input file, so we get notified problems when they
 move the url or make a new version of the file or something.

 Robby

 On Sat, Feb 19, 2011 at 8:46 AM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Sat, Feb 19, 2011 at 8:22 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Fri, 18 Feb 2011 22:44:54 -0500, Sam Tobin-Hochstadt wrote:
 At least for the JFP file, it's pretty clearly a copyright violation
 for us to distribute the file at all -- on the web page or elsewhere.
 We'd have to download it from the CUP site.

 For the ACM file, I emailed the contact email for the style file about
 the license.

 Did you e-mail anyone at JFP, yet?

 I have not, although one of the JFP editors is on this list :)

 Looking again, I can imagine reading the jfp.cls file Robby's way.
 The intent of use may be produce a document, and the overall intent
 might permit redistribution of jfp.cls to others who are producing
 JFP documents.

 That's certainly possible, but redistributing the file requires the
 permission of the copyright holder, and the tone of the notice
 suggests that they aren't very flexible about these things.
 --
 sam th
 sa...@ccs.neu.edu





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


Re: [racket-dev] [racket] tests/eli-tester feedback (Was: Racket unit testing)

2011-02-20 Thread Sam Tobin-Hochstadt
On Sun, Feb 20, 2011 at 7:08 PM, Ryan Culpepper ry...@ccs.neu.edu wrote:
 I also generalized the idea of test headers based on a long-standing feature
 request (the ability to designate tests as expected to fail).

Thank you!  This is indeed something I've wanted for a long time.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] define-wish and a call for assistance

2011-02-21 Thread Sam Tobin-Hochstadt
On Mon, Feb 21, 2011 at 8:04 AM, Kathryn Gray kathryn.g...@cl.cam.ac.uk wrote:
 I've added a preliminary version of define-wish to the teaching languages
 and the test-engine

Can we please please please not have any new undocumented features
added to the languages, *especially* the teaching languages?

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


Re: [racket-dev] racket/stream

2011-03-17 Thread Sam Tobin-Hochstadt
On Thu, Mar 17, 2011 at 3:34 PM, Matthias Felleisen
matth...@ccs.neu.edu wrote:

 1. I think we should stay away from 'stream' here.
 If Racket had grown out of the Unix tradition, I'd
 be fine with it. But we partially grew out the
 functional community, and they use 'stream' for
 a narrower concept.

I thought that Matthew was proposing to use `stream' to mean just what
Scheme/Haskell/etc people mean by streams.  Was that not the
suggestion?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] jit overflow error during building

2011-03-20 Thread Sam Tobin-Hochstadt
On Sun, Mar 20, 2011 at 2:58 PM, Matthew Flatt mfl...@cs.utah.edu wrote:
 I've pushed an attempt to fix the problem, but I'll also try
 reproducing the problem on my Ubuntu machine.

The build isn't done yet, but this appears to have fixed the problem.

Thanks!


 At Sun, 20 Mar 2011 14:53:20 -0400, Sam Tobin-Hochstadt wrote:
 Currently, I can't build Racket from Git.  I get this error:

 env XFORM_PRECOMP=yes ../racketcgc -cqu ../../../racket/gc2/xform.rkt
 --setup . --cpp gcc -E -I./.. -I../../../racket/gc2/../include
 -pthread   -DNEWGC_BTC_ACCOUNT  -D_LARGEFILE_SOURCE
 -D_FILE_OFFSET_BITS=64   --keep-lines -o xsrc/precomp.h
 ../../../racket/gc2/precomp.c
 JIT buffer overflow: 0x13f06b [0x13d000,0x13f000] (0)!!

 This is consistent after a configure and make clean.

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




-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Making --enable -places the default.

2011-03-29 Thread Sam Tobin-Hochstadt
On Tue, Mar 29, 2011 at 1:01 AM, Kevin Tew t...@cs.utah.edu wrote:
 Being able to sync on when they terminate?
 Thats pretty easy to add, I should do it.

 Place currently is an event you can sync on, but it becomes ready when a
 message arrives.  Not when it terminates.

Oh, in that case I don't see a problem with the current API.  I guess
it's a little weird that a `place?' is both an appropriate argument to
`place-wait' and to `place-recv', but I don't know if it's a good idea
to make both of those actions events.

In any case, you might want to add places to the big list of primitive
things that are events in the event documentation.

 On 03/28/2011 05:34 PM, Sam Tobin-Hochstadt wrote:

 Not a bug or crash, but it would be nice if a `place' was an event, in
 the sense of `evt?'.  Come to think of it, this would be good for
 `future' as well.

 On Mon, Mar 28, 2011 at 1:08 PM, Kevin Tewt...@cs.utah.edu  wrote:

 I would like to make --enable-places the default in the near future.

 I would appreciate it, if racket developers could configure and build
 with
 --enable-places
 and report any bugs or crashes.

 Thanks,
 Kevin

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








-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Making --enable -places the default.

2011-03-29 Thread Sam Tobin-Hochstadt
On Tue, Mar 29, 2011 at 8:42 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Mon, Mar 28, 2011 at 6:34 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 Not a bug or crash, but it would be nice if a `place' was an event, in
 the sense of `evt?'.  Come to think of it, this would be good for
 `future' as well.

 FWIW, this will probably never happen for futures, due to future-safe
 issues. Using events in a future is currently far far far from being
 future safe.

I wasn't thinking of using events in futures -- that does sound like a
ton of work.  I just meant that

(sync (future (lambda () ...)))

should be the same as

(touch (future (lambda () ...)))

or is that hard for future-safety reasons as well?
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Making --enable -places the default.

2011-03-29 Thread Sam Tobin-Hochstadt
On Tue, Mar 29, 2011 at 9:38 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Tue, 29 Mar 2011 08:46:06 -0400, Sam Tobin-Hochstadt wrote:
 I just meant that

 (sync (future (lambda () ...)))

 should be the same as

 (touch (future (lambda () ...)))

 or is that hard for future-safety reasons as well?

 I'm not convinced that it makes sense. When you create a future,
 there's no guarantee that the future's thunk will run concurrently with
 the main computation (i.e., a future may provide parallelism, but it's
 not intended for concurrency). So, if you simply `sync' on the future's
 completion, it won't necessarily ever complete, because no one is
 necessarily demanding the result.

Spending a little more time with docs for all of the events, I think I
was misled by the fact that (sync ch), for some channel `ch', behaves
like (channel-get ch).  However, none of the other values that are
events are like that, so it might not make sense for `future'.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Parametric/c (was Re: [plt] Push #22411: master branch updated)

2011-04-08 Thread Sam Tobin-Hochstadt
On Fri, Apr 8, 2011 at 11:38 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Friday, April 8, 2011, Sam Tobin-Hochstadt sa...@ccs.neu.edu wrote:
 On Fri, Apr 8, 2011 at 10:57 AM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 I think I'm not in favor of the move of parametric/c into the contract
 library. Sam and I had a discussion about this is Austin, tho, so
 maybe I'm misremembering the outcome?

 One of us is definitely misremembering the outcome -- my memory was
 that we decided that `parametric/c' was important and belonged
 alongside `new-exists/c'.

 I thought I had convinced you that my special casing the - way of
 looking at the world was sensible and that we didn't really have a
 good answer for what the Right Thing was.

Yes, this is my recollection as well, so less misremembering than I thought.

 I would be happy if this one were renamed to not take this general
 sounding name. Something like parametric-/c or something (perhaps
 even with a corresponding restriction that the thing inside be a fn,
 if that check isn't already there).

 Is that ok?

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


Re: [racket-dev] exact nonnegative integers as sequences?

2011-04-18 Thread Sam Tobin-Hochstadt
On Mon, Apr 18, 2011 at 9:25 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 I often write

  (for ([i (in-range N)]) ...)

 In cases where the loop overhead is not significant (i.e., I don't care
 whether the compiler can tell that I'm iterating through integers),

Or in cases where you're using Typed Racket, and the compiler can tell
exactly what you're doing. :)

 it
 would be nice to write just

  (for ([i N]) ...)

 which would require that integers are treated as sequences.

 Would anyone object to making an exact, nonnegative integer `N' a
 sequence equivalent to `(in-range N)'?

I am very strongly in favor of this.
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] exact nonnegative integers as sequences?

2011-04-18 Thread Sam Tobin-Hochstadt
On Mon, Apr 18, 2011 at 9:58 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I also don't buy Sam's implicit argument for my example. If I had
 tried to port this to code to typed racket to just read off the types,
 I would have spent far longer as debugging via TR's error messages is
 going to be less productive than debugging via tracing the flow of
 values in the program.

While I support this change for basically the reasons Matthew and
Matthias point to, I wasn't trying to claim that TR makes this easier
to follow, just that TR removes the performance penalty Matthew
mentioned.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] lots of new tests pushed

2011-04-25 Thread Sam Tobin-Hochstadt
On Mon, Apr 25, 2011 at 9:15 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I thought that they weren't in the normal distribution, only the full one.

Sorry, my sentence wasn't clear. The tests/ collection isn't in the
normal distribution, but your new tests are.


 Robby

 On Mon, Apr 25, 2011 at 8:14 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Mon, Apr 25, 2011 at 8:40 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 On Monday, April 25, 2011, Sam Tobin-Hochstadt sa...@ccs.neu.edu wrote:
 On Mon, Apr 25, 2011 at 2:32 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 I just pushed tests for all non-racket and non-scheme collections that
 makes sure that all of the top-level libraries have their exports
 fully documented. I left out info.rkt and tried to drop obviously bad
 things from this list, but if you spot problems when drdr complains at
 you, please just go edit the file to remove libraries that shouldn't
 be there.

 Thanks, this is useful.

 Is there a benefit to have this spread over all the collections,
 instead of in a directory under collects/tests?

 I put them where they are to catch the default responsibilities in
 drdr. But I have no other reason.

 Ah, makes sense. However, this has the drawback that they're in the
 distribution.  Does that need to be fixed?
 --
 sam th
 sa...@ccs.neu.edu





-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Typed Racket support for Ephemerons

2011-04-26 Thread Sam Tobin-Hochstadt
On Tue, Apr 26, 2011 at 2:19 PM, Eric Dobson eric.n.dob...@gmail.com wrote:
 I have added support for ephemerons to Typed Racket, and submitted a pull 
 request on Github (https://github.com/plt/racket/pull/5). This patch is 
 supposed to fix PR 11633.

All of this looks good, except that `EphemeronTop' is unnecessary.
Since ephemerons are covariant, (Ephemeronof Any) is a supertype of
(Ephemeronof T) for any type T.

Vincent says that he'll change that and push the result.

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


Re: [racket-dev] narrow menus in 5.1

2011-04-26 Thread Sam Tobin-Hochstadt
This happens on my system as well, which is Ubuntu 11.04, but it
didn't happen until some point after 5.1, I believe.

On Tue, Apr 26, 2011 at 6:58 PM, Jon Rafkind rafk...@cs.utah.edu wrote:
 A user from #scheme on irc said drracket in 5.1 shows narrow menus. His
 system is ubuntu 10.10, the language is Portuguese.

 http://www.pasteall.org/pic/show.php?id=11565
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




-- 
sam th
sa...@ccs.neu.edu

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


[racket-dev] Redirecting documentation links

2011-05-06 Thread Sam Tobin-Hochstadt
Is it possible to tell Scribble to use the documentation for one
binding for another binding?  For example, Typed Racket has a binding
for `for' which is semantically the same as `for' from `racket/base',
but wraps a trivial type annotation around it.  Rather than having an
entry in the TR docs for this, I'd like the documentation to just go
to the docs for the regular `for'.  Is this doable?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Redirecting documentation links

2011-05-06 Thread Sam Tobin-Hochstadt
On Fri, May 6, 2011 at 10:15 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 I think the right way to do this is to use defidthing with a minimal
 description and a pointer over to the racket for.

That's certainly possible, but I don't think it's the right user
experience for someone programming in Typed Racket.  If they click
Check Syntax, I'd like the documentation option to go directly to what
they want, rather than through an indirection.

 Unless it is literally the same binding (re-exported), in which case
 you can make scribble do that.

 (Macros can tell the difference, after all.)

Macros can tell a lot of differences that we don't reflect in the
documentation (such as being the same binding, re-exported).
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] racket vs. scheme vs. clojure (as it appears to others)

2011-05-06 Thread Sam Tobin-Hochstadt
The technology Noel is suggesting randomly chooses whether to give the
current description, or some new description (which we would have to
write).  Then it measures which description leads more people to
download Racket.

On Fri, May 6, 2011 at 10:41 AM, Matthias Felleisen
matth...@ccs.neu.edu wrote:

 For what time period should we leave the description constant to test this 
 conjecture?


 On May 6, 2011, at 10:33 AM, Noel Welsh wrote:

 In retrospect I think this post was a bit opaque. So, some exposition:

 We have a hypothesis: changing the description of Racket will increase
 adoption. We can measure this and optimise for it. The measure of
 adoption could be doesn't bounce or downloads Racket, for example.
 (Bouncing means leaving the page immediately. Yes these measures
 aren't perfect but the great is the enemy of the good in these
 situations.) We have various different descriptions we can try. Myna
 is a system for optimising the choice of description. A/B testing is
 the current industry standard. It is essentially hypothesis testing.
 Myna uses better mathematics to achieve better results.

 HTH,
 N.

 On Fri, May 6, 2011 at 9:22 AM, Noel Welsh noelwe...@gmail.com wrote:
 On Thu, May 5, 2011 at 12:31 AM, Justin Zamora jus...@zamora.com wrote:
 A sentence like that would be a good replacement for the awful,
 Racket is a programming language currently on the front page of
 racket-lang.org

 We are men of science; untested hypotheses do not become us. Luckily,
 your buddies at Untyped have recently created a system called Myna for
 testing these kind of hypotheses:

  http://mynaapp.com/

 We'd *love* to use Racket as a case study. I'm sure you have enough
 traffic to get some good results fairly quickly, and this problem is a
 straight-forward application of Myna.

 If you've heard of A/B testing, this blog post explains why Myna isn't
 A/B testing:

  http://untyped.com/untyping/2011/02/11/stop-ab-testing-and-make-out-like-a-bandit/

 Cheers,
 Noel

 PS: Anyone else reading this who would like to use Myna -- drop me an
 email at this address or n...@untyped.com.


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


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




-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] racket vs. scheme vs. clojure (as it appears to others)

2011-05-07 Thread Sam Tobin-Hochstadt
Right now, we're already using JS to decide which of the 3 initial
code snippets to display.  So, why not start with using Noel's tool
for that, and go from there?  We already have a built-in group of
possibilities to measure, and we're already using JavaScript.

As an aside, I suspect that non-JavaScript-browsers are more popular
among people who complain to Eli than than among the general visitor
population.  :)

On Sat, May 7, 2011 at 9:38 AM, Noel Welsh noelwe...@gmail.com wrote:
 You have to contact the Myna server somehow to get suggestions. You
 can do this via the server or via the client, with the usual
 tradeoffs. I would go with the JS client as it's much faster to set
 up, and code the HTML in such a way that it still works if JS is
 disabled. (This is straightforward, and the example in the API docs
 does this.)

 N.

 On Sat, May 7, 2011 at 2:33 PM, Eli Barzilay e...@barzilay.org wrote:
 Do you mean that it requires JS to work?  What about non-JS browsers?
 (There are some people who find it important -- I've even made some
 changes to the front page to make it friendlier to text browsers.)

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




-- 
sam th
sa...@ccs.neu.edu

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


[racket-dev] syntax/stx vs racket/private/stx

2011-05-13 Thread Sam Tobin-Hochstadt
The `syntax/stx' and `racket/private/stx' libraries contain a bunch of
duplication.  In particular, the following functions seem identical:
`stx-null?' `stx-list?' `stx-list' `stx-pair?' `stx-car' `stx-cdr'.

Is there any reason not to just have `syntax/stx' reprovide them,
instead of defining duplicate versions?
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] syntax/stx vs racket/private/stx

2011-05-16 Thread Sam Tobin-Hochstadt
On Mon, May 16, 2011 at 8:36 AM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Mon, May 16, 2011 at 7:14 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 At Fri, 13 May 2011 17:38:41 -0400, Sam Tobin-Hochstadt wrote:
 The `syntax/stx' and `racket/private/stx' libraries contain a bunch of
 duplication.  In particular, the following functions seem identical:
 `stx-null?' `stx-list?' `stx-list' `stx-pair?' `stx-car' `stx-cdr'.

 Is there any reason not to just have `syntax/stx' reprovide them,
 instead of defining duplicate versions?

 Seems fine to me. (Originally, the code in `racket/private/stx' wasn't
 really accessible from `syntax/stx'.)

 Were they in different programming languages, by chance?

I believe they used to be in `startup.ss', which was in Racket in most
senses.  Although with an interesting implementation ...
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] gtk too-small menu bar

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 12:04 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 In consultation with Matthew, I've pushed a change that fixes the too
 small menu bar problem, at least on a VM on my laptop.

 If you're seeing this problem, can you check and see if the change
 fixes it for you too?

 Also, if someone could try it out on a unity setup, that'd be helpful.

This works for me on both my machine running Unity, and my machine
running Gnome3.

On Unity, there's a black bar where the menu bar would be, since Unity
puts the menus in the top panel.  I'm not sure what the right way to
remove that is.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] gtk too-small menu bar

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 2:58 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 1:45 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 12:04 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 In consultation with Matthew, I've pushed a change that fixes the too
 small menu bar problem, at least on a VM on my laptop.

 If you're seeing this problem, can you check and see if the change
 fixes it for you too?

 Also, if someone could try it out on a unity setup, that'd be helpful.

 This works for me on both my machine running Unity, and my machine
 running Gnome3.

 On Unity, there's a black bar where the menu bar would be, since Unity
 puts the menus in the top panel.  I'm not sure what the right way to
 remove that is.

 Wouldn't the right thing be to actually put the menus there instead of
 removing that bar? (Or am I misunderstanding something?)

No, Unity makes a global design choice that menus go in the top panel
(like on a Mac).

Here's a screenshot that shows what's going on:
  
http://www.linuxuser.co.uk/wp-content/uploads/2010/09/Ubuntu-Ubunity-Screenshot-4.png
-- 
sam th
sa...@ccs.neu.edu

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


[racket-dev] Fancy application/automatic anonymous functions

2011-05-17 Thread Sam Tobin-Hochstadt
Scala has the nice feature that if you write something like this:
  lst.map(_ - 1)
It automatically rewrites to a function like this:
  lst.map(x = x - 1)
This makes writing some higher-order functions much easier.

Of course, it's easy to make this using a macro and `#%app'.  You can
see the result here:
  github.com/samth/fancy-app

I'm planning to put this in `unstable/app', and if there's interest
I'll think about incorporating it into the default `#%app', after some
experience with it.

Lots of people have written similar things (`cut' in SRFI 26, Jay's
`super-cut', etc), but I'd like to move towards using it implicitly.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] gtk too-small menu bar

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 3:08 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 2:05 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 2:58 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 1:45 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 12:04 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 In consultation with Matthew, I've pushed a change that fixes the too
 small menu bar problem, at least on a VM on my laptop.

 If you're seeing this problem, can you check and see if the change
 fixes it for you too?

 Also, if someone could try it out on a unity setup, that'd be helpful.

 This works for me on both my machine running Unity, and my machine
 running Gnome3.

 On Unity, there's a black bar where the menu bar would be, since Unity
 puts the menus in the top panel.  I'm not sure what the right way to
 remove that is.

 Wouldn't the right thing be to actually put the menus there instead of
 removing that bar? (Or am I misunderstanding something?)

 No, Unity makes a global design choice that menus go in the top panel
 (like on a Mac).

 Here's a screenshot that shows what's going on:
  http://www.linuxuser.co.uk/wp-content/uploads/2010/09/Ubuntu-Ubunity-Screenshot-4.png

 I understood that.

 Oh! Are you saying that there is a space at the top of the window (as
 opposed to the screen)?

Right.

 Did that not used to be there?

Previously, that space had the menus in it, I think.

 Hm. I can see how my change would have
 done that. But given that the original code didn't work, I don't see
 how to fix the problem without an explicit test on whether the menu
 bar is in the window or not. Well, it requires more understanding of
 gtk than I have, anyways.

Oh, the current behavior is a big improvement.  I expect that the
current problem is a lower-level issue with our GTK bindings.  I'll
see if I can come up with a smaller test case.
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Fancy application/automatic anonymous functions

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 3:21 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 What is the rule for where the lambda goes?

If you have an application with one (or more) occurences of `_' as
immediate subforms, then that application is rewritten into (lambda
args the-original-application).

It doesn't attempt to do a deep inspection of the term, or to expand
the arguments to `#%app'.

Thus:

(+ _ 1) = (lambda (x) (+ x 1))

(+ (+ _ 1) 2) = (+ (lambda (x) (+ x 1)) 2) ;; which is a runtime error

This rule is (a) simple and (b) the same as what Scala does.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] gtk too-small menu bar

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 3:20 PM, Robby Findler
ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 2:16 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 3:08 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 2:05 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 2:58 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 On Tue, May 17, 2011 at 1:45 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu 
 wrote:
 On Tue, May 17, 2011 at 12:04 PM, Robby Findler
 ro...@eecs.northwestern.edu wrote:
 In consultation with Matthew, I've pushed a change that fixes the too
 small menu bar problem, at least on a VM on my laptop.

 If you're seeing this problem, can you check and see if the change
 fixes it for you too?

 Also, if someone could try it out on a unity setup, that'd be helpful.

 This works for me on both my machine running Unity, and my machine
 running Gnome3.

 On Unity, there's a black bar where the menu bar would be, since Unity
 puts the menus in the top panel.  I'm not sure what the right way to
 remove that is.

 Wouldn't the right thing be to actually put the menus there instead of
 removing that bar? (Or am I misunderstanding something?)

 No, Unity makes a global design choice that menus go in the top panel
 (like on a Mac).

 Here's a screenshot that shows what's going on:
  http://www.linuxuser.co.uk/wp-content/uploads/2010/09/Ubuntu-Ubunity-Screenshot-4.png

 I understood that.

 Oh! Are you saying that there is a space at the top of the window (as
 opposed to the screen)?

 Right.

 Did that not used to be there?

 Previously, that space had the menus in it, I think.

 Hm. I can see how my change would have
 done that. But given that the original code didn't work, I don't see
 how to fix the problem without an explicit test on whether the menu
 bar is in the window or not. Well, it requires more understanding of
 gtk than I have, anyways.

 Oh, the current behavior is a big improvement.  I expect that the
 current problem is a lower-level issue with our GTK bindings.  I'll
 see if I can come up with a smaller test case.

 I'm confused now and I think a screenshot of drracket would clear
 things up, but I suspect that someone has to start fiddling around
 with gtk calls on a unity setup to really make progress.

Here are screenshots:

Maximized, with menu:
 http://punge.ccs.neu.edu/~samth/drr-max2.png
Maximized, with window title:
 http://punge.ccs.neu.edu/~samth/drr-maximized.png
Not maximized:
 http://punge.ccs.neu.edu/~samth/drr-small.png
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] gtk too-small menu bar

2011-05-17 Thread Sam Tobin-Hochstadt
On Tue, May 17, 2011 at 3:16 PM, Sam Tobin-Hochstadt sa...@ccs.neu.edu wrote:
  I'll see if I can come up with a smaller test case.

Here's a smaller test case for the problem/bug.  Since this doesn't
call any of the framework/drracket, I'm assuming it's an issue in the
GTK bindings.

#lang racket/gui

(define f (new frame% [label Test] [width 300] [height 300]))
(define m (new menu-bar% [parent f]))
(define m1 (new menu% [parent m] [label Menu]))
(define m2 (new menu% [parent m1] [label Element]))
(send f show #t)
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] crash in DrRacket 5.1.1

2011-05-19 Thread Sam Tobin-Hochstadt
This crashes DrRacket (but not command line Racket, or 'raco make') on
Linux as well, but *only* if Debugging is off.

On Thu, May 19, 2011 at 10:11 AM, Pierpaolo Bernardi
olopie...@gmail.com wrote:
 Hello,

 attempting to compile the attached file crashes DrRacket.

 Banner: Welcome to DrRacket, version 5.1.1 [3m].
 Environment: windows XP 32 bit.

 P.

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




-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] `letrec' and continuations

2011-05-20 Thread Sam Tobin-Hochstadt
On Fri, May 20, 2011 at 10:53 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
 I like the idea of adjusting the semantics of internal definitions and
 leaving `letrec' alone.

While this seems like a nice change, how does it interact with
internal syntax definitions?  If there are internal syntax
definitions, do we fall back to `letrec-syntaxes+values'?  Do we want
`letrec-syntaxes+let*-values' (I hope not)?


 At Fri, 20 May 2011 09:39:06 -0500, Robby Findler wrote:
 How about making letrec (or letrec*?) be syntactically illegal if
 there are no forward references and make the internal definition
 expander avoid it in that case? (Or maybe just the second half of
 that.)

 Robby

 On Fri, May 20, 2011 at 9:28 AM, Matthew Flatt mfl...@cs.utah.edu wrote:
  If you run this program in Racket,
 
   (let ([restart void])
    (letrec ([forward-reference (lambda () maybe-ready)] ; affects compiler
             [dummy1 (let/cc k (set! restart k))]
             [dummy2 (displayln maybe-ready)]
             [maybe-ready 'ready])
      (let ([rs restart])
        (set! restart void)
        (rs #f
 
  then the output is
 
   #undefined
   ready
 
  The second printout is ready because locations for all of the
  `letrec'-bound variables are allocated before the right-hand sides are
  evaluated --- which means before the continuation is captured.
 
 
  If you comment out the `forward-reference' binding, however, then the
  printout is
 
   #undefined
   #undefined
 
  That's because the optimizer, seeing no forward references, incorrectly
  converts the `letrec' to a `let*'.
 
  There's some logic in the optimizer to avoid a transformation from
  `letrec' to `let*' when a continuation might be captured, but it's
  obviously broken. I could fix it, but before I fix the optimizer for
  the current semantics, I wonder whether there's some way to specify the
  semantics of `letrec' so that a conversion to `let*' would be legal.
 
 
  A programmer almost never needs the semantics of `letrec' that
  `call/cc' exposes, and a programmer often wants `letrec' to be as
  efficient as `let' or `let*'. This is particularly true now that
  Racket's syntax lets you use internal definitions in so many places.
  For example, a quicksort core
 
   (define (quicksort! vec n m)
    (when ( (- m n) 1)
      (let* ([around-val (vector-ref vec n)]
             [pos (pivot around-val vec n m)])
        (vector-set! vec pos pivot)
        (quicksort! vec n pos)
        (quicksort! vec (add1 pos) m
 
  is 15% faster (on a vector of 100 random numbers) than
 
   (define (quicksort! vec n m)
    (when ( (- m n) 1)
      (define around-val (vector-ref vec n))
      (define pos (pivot around-val vec n m))
      (vector-set! vec pos around-val)
      (quicksort! vec n pos)
      (quicksort! vec (add1 pos) m)))
 
  With internal definitions, the compiler can't see enough of `pivot' to
  be sure that it won't capture a continuation, and so it heap-allocates
  a location for `pos'.
 
  R6RS addresses the problem by saying that an expression on the
  right-hand side of `letrec*' cannot return multiple times. In practice,
  I expect that means a compiler would convert `letrec*' to `let*'
  without checking the multiple-return constraint --- exploiting the
  usual unspecified trap door. Obviously, I'm not in favor of
  unspecified behavior. I also don't see how to make a single-return
  check efficient; it seems to require heap allocation.
 
 
  Any ideas?
 
  _
   For list-related administrative tasks:
   http://lists.racket-lang.org/listinfo/dev
 

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



-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] `letrec' and continuations

2011-05-20 Thread Sam Tobin-Hochstadt
On Fri, May 20, 2011 at 5:25 PM, John Clements
cleme...@brinckerhoff.org wrote:

 On May 20, 2011, at 1:39 PM, Matthias Felleisen wrote:



 Let me make my proposals (2 and 3) more precise because your response 
 suggests they were too short.

 1. We could make internal define the primary vehicle for definitions, i.e., 
 not compile thru letrec. As far as I am concerned, your change to the 
 language to allow defines in many more places has made letrec superfluous.

 Perhaps this goes without saying, but I'm hoping that if internal defines 
 don't expand into letrec any more, that they expand into some similar form 
 that has syntactically obvious scoping; I like the fact that the scope of 
 letrec-declared variables is delimited by the syntactic letrec term.

Yes, this is very important for Typed Racket and other tools that
process expanded syntax.
-- 
sam th
sa...@ccs.neu.edu

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


[racket-dev] RacketCon -- July 23 24

2011-05-23 Thread Sam Tobin-Hochstadt
   Calling All Racketeers!

This is the second announcement of RacketCon (aka Racket Days):

   23  24 July 2011
   http://con.racket-lang.org/

The meeting will take place at Northeastern University in Boston, MA.
It will be an opportunity for developers, researchers, and educators
using Racket, DrRacket, Program By Design, and related technologies to
come together to share plans, ideas, and enthusiasm.  To make it
accessible, we will not charge any registration fees; we'll also serve
you breakfast and lunch.

RacketCon will feature presentations by key members of the
development team, including Matthew Flatt on the future of Racket and
Matthias Felleisen on the Program By Design curriculum.

Most importantly, though, we also want it to feature you.  We are
interested in presentations of any length on using Racket in
industrial software development, academic research, or education -- as
well as anything that we haven't thought of.  All sorts of
presentations are welcome, from extended tutorials to short demos to
experience reports.  Be creative!

To obtain a slot on the program, please send a title and a brief
abstract on what you would like to present to the organizers at:

  racketcon at racket-lang.org

Specify how much time you would like for your presentation (anything as
short as 5 minutes and as long as 30 minutes works).  We will try to
accommodate as many presentations as possible.

Talk proposals should be sent in by *June 15, 2011*.

Additional information can be found on the web page: http://con.racket-lang.org

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


Re: [racket-dev] type-case + typed racket yet?

2011-05-25 Thread Sam Tobin-Hochstadt
On Wed, May 25, 2011 at 12:27 PM, John Clements
cleme...@brinckerhoff.org wrote:
 Is there a best-practice model for type-case-like things in typed racket 
 yet? Obvious choices:

 - tagged-list style, it's all a big cond but I have to use first, second, etc 
 to refer to fields
 - struct-union style, feels better but I don't get to use match (IIUC).

`match' and unions of structs should work fine together in Typed Racket.
-- 
sam th
sa...@ccs.neu.edu
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] goofy type hack (was: Re: type-case + typed racket yet?)

2011-05-25 Thread Sam Tobin-Hochstadt
On Wed, May 25, 2011 at 1:43 PM, John Clements
cleme...@brinckerhoff.org wrote:
 I see that typed racket doesn't signal an error on a match that doesn't have 
 clauses for all possible inputs, which is entirely reasonable; since that 
 will signal an error, that code should typecheck fine.

 However, I might *want* typed racket to check that for me.  I managed to come 
 up with this grozzz hack:

 (: g ((U Number False) - Number))
 (define (g x)
  (cond [(number? x) (+ x 4)]
        [(false? x) 13]
        ;; type of x is now uninhabitable, so no typechecking error
        [else (begin (string-append x abc) (error 'foo))]))

 In this case, when I comment out the 'false?' clause, the bogus clause 
 suddenly is type-checked (because x's type is no longer the empty union), and 
 I get an error.

 So... I can get what I want, but in a very icky way.  Is there a different 
 and more elegant way to force typed racket to check that I'm not failing to 
 match?

I've thought about adding a (fail-to-typecheck) form, but haven't yet.

Unfortunately, coverage checking isn't always perfect, so that
programming style can become painful in Typed Racket.
-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] Please help me to understand the two lines.

2011-05-30 Thread Sam Tobin-Hochstadt
On Mon, May 30, 2011 at 10:07 AM, Yingjian Ma yingjian.ma1...@gmail.com wrote:

 The lines are from
 http://pre.racket-lang.org/docs/html/reference/booleans.html
 section 3.1

 The lines are:
 (boolean? v) → boolean?
   v : any/c

 Question 1
 The result (boolean? v) is a boolean.  Why is it not
 (boolean? v) → boolean
  instead of
 (boolean? v) → boolean?
 ?

`boolean?' is a contract, since all predicates are contracts.
`boolean' is not a contract; it's not defined at all.

 Question 2
 If v can be anything,  why not just use any instead of using any/c?

The difference between `any' and `any/c' is explained here:
http://docs.racket-lang.org/guide/contract-func.html?q=any#(part._any_and_any_c)

 Question 3
 What does / and c mean?

The convention of ending names with /c is a naming convention for
contracts.  In Racket, / can appear in names just like any other
character, such as ? or c.
--
sam th
sa...@ccs.neu.edu

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

Re: [racket-dev] Racket breaking and exiting

2011-06-02 Thread Sam Tobin-Hochstadt
On Thu, Jun 2, 2011 at 12:39 AM, Eduardo Bellani ebell...@gmail.com wrote:
 I think I understand you, but in that case it should report the
 undefined reference and stay on the repl, no?

The next thing after `a' on the port is end-of-file, so the REPL
decides that everything is done, and exits.

 Thanks everyone of the prompt answers.

 On 06/01/2011 08:37 PM, John Clements wrote:

 On Jun 1, 2011, at 4:04 PM, Eduardo Bellani wrote:

 My racket breaks if the following code is executed:

 (current-input-port (open-input-string a))

 with the following message:

 reference to undefined identifier: a

 ?

 That sounds like the right behavior to me, in an environment with a REPL.  
 That is, you set current-input-port to pull from the string a, then you 
 drop into the REPL, which reads from stdin, producing the string a, which 
 reads as a reference to the variable a.

 No?

 John Clements



 --
 Eduardo Bellani

 omnia mutantur, nihil interit.
 _
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev




-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] typed/racket for loops?

2011-06-07 Thread Sam Tobin-Hochstadt
No annotations are needed here, even:

#lang typed/racket

(: p (Listof Integer))
(define p
 (for/list ([i (in-range 30)]) i))

The other problem is why doesn't it know that `in-range' produces
Naturals; I'll look into that.

On Tue, Jun 7, 2011 at 12:24 PM, Hari Prashanth krh...@ccs.neu.edu wrote:
 Its a bad error message I believe.

 (: p (Listof Fixnum))
 (define p
  (for/list: : (Listof Fixnum) ([i : Fixnum (in-range 30)]) i))


 - Original Message -
 From: John Clements cleme...@brinckerhoff.org
 To: Sam Tobin-Hochstadt sa...@ccs.neu.edu
 Cc: dev dev@racket-lang.org
 Sent: Tuesday, June 7, 2011 3:10:58 PM (GMT-0500) Auto-Detected
 Subject: [racket-dev] typed/racket for loops?

 I can't get typed racket to work with for loops, e.g.:

 #lang typed/racket

 (: p (Listof Natural))
 (define p
  (for/list: : Natural ([i (in-range 30)]) i))

 == Type Checker: Error in macro expansion -- untyped variable: for-loop in: 
 (for/list: : Natural ((i (in-range 30))) i)


 Am I doing something silly here? I tried annotating the type of the loop 
 variable 'i', with no change in the error message.

 John


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




-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] more general typed/scheme bafflement...

2011-06-07 Thread Sam Tobin-Hochstadt
On Tue, Jun 7, 2011 at 4:57 PM, John Clements cleme...@brinckerhoff.org wrote:

 On Jun 7, 2011, at 4:26 PM, Carl Eastlund wrote:

 John,

 You had an easy time with + because it is monomorphic.  You are having
 trouble applying one polymorphic function (map) to another (list or
 list2).  Instantiate one or both functions explicitly, and Typed
 Racket won't get confused by the guesswork.

 Also, T ... i in a type does not mean T ... followed by i.  It means T
 ... *indexed* by i.  It's clarifying what the ... ranges over.

 Awesome! Many thanks. Next question.  I'm reading sexps from a file, so 
 typed/racket insists that I check their shape before using them.  That's 
 fine, but I find myself unable to define the (Pairof Any (Pairof Any Null)) 
 predicate the way I'd expect it to be defined:

What you actually want to use here is `define-predicate', which will
automatically define the predicate you want given the type.


 (: listoflength2? (Any - Boolean : (Pairof Any (Pairof Any Null
 (define (listoflength2? a)
  (and (pair? a) (pair? (cdr a)) (null? (cddr a

This definition will eventually typecheck, but not yet.  :)

-- 
sam th
sa...@ccs.neu.edu

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


Re: [racket-dev] `take-until' etc

2011-06-08 Thread Sam Tobin-Hochstadt
Me too.  I like `take-until' as well.

2011/6/8 Jay McCarthy jay.mccar...@gmail.com:
 I'd really like #:unless as well

 iPhoneから送信

 On 2011/06/08, at 9:21, Eli Barzilay e...@barzilay.org wrote:

 Anyone seconds this?

 And if so, then maybe for-loops should have an `#:unless' too?  (I
 know that this was raised, but now there's more experience using it.)



 Yesterday, Jay McCarthy wrote:
 I've used them before and I find they read better than using negate.

 2011/6/7 Eli Barzilay e...@barzilay.org:
 Does anyone see a need for `take-until' (and `drop-' and `-right'
 versions), or is `negate' enough to not have that?

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




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


  1   2   3   4   5   6   7   >