<br><br>On Monday, April 28, 2014, Matthias Felleisen <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
So far we have had two threads of reactions to my 'comments on<br>
comments.' They have produced requests that I consider actionable<br>
items though I have counter-proposal to some of them. The list<br>
below does not include other actionable items I had on my list<br>
that did not get comments.<br>
<br>
<br>
<br>
With credit:<br>
<br>
* SAM suggests to always start in #lang racket. Tell students to<br>
switch to #lang htdp/bsl or use Choose Language. I think this is<br>
plain unfriendly to our largest audience. Here is my<br>
counter-proposal:<br>
<br>
when drracket starts w/o a preference file, we pop up a radio menu:<br>
<br>
o Are you a student learning to program?<br>
o Are you an experienced programmer learning to use Racket?<br>
<br>
Depending on which bullet the person checks, drracket starts in<br>
BSL [#lang htdp/bsl, one day soon] or #lang racket.<br>
<br></blockquote><div><br></div><div>So you are asking to go back to the way it was before we added the "not a language" language?</div><div><br></div><div>Robby<span></span></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
* LAURENT asks for:<br>
<br>
~~ faster re-indentation of last files. Will pre-computations<br>
help or is the display on the screen the bottleneck?<br>
<br>
~~ the language selection menu should also be available from<br>
the general preference dialog<br>
<br>
~~ the following MV functions:<br>
<br>
~~ what names should they receive?<br>
~~ where should they and their tests go?<br>
<br>
;; (X ... -> Y ...) X *-> [List-of Y]<br>
;; gather the return MVs from (apply f s) in a list<br>
<br>
(module+ test<br>
(check-equal?<br>
(gather-return-values (lambda () (values 1 2)))<br>
(list 1 2))<br>
<br>
(check-equal?<br>
(gather-return-values (lambda (x) (values 1 x)) 2)<br>
(list 1 2))<br>
<br>
(check-equal?<br>
(gather-return-values (lambda (x y) (values y x)) 2 1)<br>
(list 1 2)))<br>
<br>
(define (gather-return-values f . s)<br>
(call-with-values (lambda () (apply f s)) list))<br>
<br>
;; Nat (X ... -> Y ...) X *-> Y<br>
;; pick the i-th return value from a bunch of MVs<br>
<br>
(module+ test<br>
(check-equal?<br>
(nth-return-value 0 (lambda () (values 1 2)))<br>
1)<br>
<br>
(check-equal?<br>
(nth-return-value 0 (lambda (x) (values 1 x)) 2)<br>
1)<br>
<br>
(check-equal?<br>
(nth-return-value 0 (lambda (x y) (values y x)) 2 1)<br>
1))<br>
<br>
(define (nth-return-value i f . s)<br>
(call-with-values<br>
(lambda () (apply f s))<br>
(lambda l (list-ref l i))))<br>
<br>
~~ macros should come with 'meta information' such as<br>
indentation; sub-modules may enable this; probably a<br>
research topic (well, I no longer have a macrologist<br>
in the group)<br>
<br>
</blockquote>