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