Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Monday, April 28, 2014, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. So you are asking to go back to the way it was before we added the not a language language? Robby * 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) _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Mon, Apr 28, 2014 at 3:47 PM, Matthias Felleisen matth...@ccs.neu.eduwrote: o Are you a student learning to program? o Are you an experienced programmer learning to use Racket? (why /learning/ to use Racket? I could well be that s/he's on a new machine) Why not simply Choose a language and give a list of the usual ones with explanations? define (gather-return-values f . s) (call-with-values (lambda () (apply f s)) list)) Why not something like `apply-list` or `apply/list`? (personally I usually call it `cvl` for call/values-list, but that's because I often use it on the command line, which makes going from `(foo 'a 'b 'c)` to `(cvl foo 'a 'b 'c)` effortless) (define (nth-return-value i f . s) (call-with-values (lambda () (apply f s)) (lambda l (list-ref l i Forgot to mention that I've had less need for this one as once you have `gather-return-values` it's easy enough to write `(second (gather-return-values foo 'a 'b 'c))`. Laurent _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: * 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. What do you think about combining my suggestion with Neil's suggestion of how to help people who then misuse the Racket language? Also, I think that in almost every course using DrRacket, the students will need to learn how to choose languages, because they will switch from one teaching language to the next. So I think this won't be unfriendly. Sam _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Apr 28, 2014, at 9:51 AM, Robby Findler ro...@eecs.northwestern.edu wrote: So you are asking to go back to the way it was before we added the not a language language? I don't think we asked simple questions like that. We popped up the dialogue itself, no? _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
2014-04-28 16:12 GMT+02:00 Matthias Felleisen matth...@ccs.neu.edu: SAM: Also, I think that in almost every course using DrRacket, the students will need to learn how to choose languages, because they will switch from one teaching language to the next. So I think this won't be unfriendly. I am not sure this is true for simple high school courses or anyone who wants to run Bootstrap 2 off-line. In a high school context the teacher will typically show the students how to install DrRacket and then guide them through their first example. Starting the program with #lang beginner would not be a problem, as far as I can see. /Jens Axel _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. In all of these cases, the language dialog needs to appear. Sam _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On Apr 28, 2014, at 10:40 AM, Sam Tobin-Hochstadt sa...@cs.indiana.edu wrote: Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. I don’t remember how much Scheme you need to use the sample code in SICP — at least ISSL — but Picturing Programs is written assuming you’re starting in BSL, and it explicitly says when to switch to another language. Stephen Bloch sbl...@adelphi.edu signature.asc Description: Message signed with OpenPGP using GPGMail _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
Yes, there are many cases to cover. The important problem to solve is what is the right default? What is appropriate 95% of the time? I don't have that data. You could have different distributions also, with the appropriate default. Tell students to get the picturing programs drracket or the Pyret drracket, etc etc. Students who have a hard time finding choose a language will also have decision confusion if given a big dialog of find your class's preference in the haystack. -Ian - Original Message - From: Sam Tobin-Hochstadt sa...@cs.indiana.edu To: Matthias Felleisen matth...@ccs.neu.edu Cc: dev@racket-lang.org Dev dev@racket-lang.org Sent: Monday, April 28, 2014 10:40:37 AM GMT -05:00 US/Canada Eastern Subject: Re: [racket-dev] actionable items, was: comments on comments on learning Racket On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. In all of these cases, the language dialog needs to appear. Sam _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
I withdraw my support for this item. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
You could have different distributions also, with the appropriate default. Tell students to get the picturing programs drracket or the Pyret drracket, etc etc. This seems like the way to go. There won't be one optimal solution for Racket's wide spectrum of users. There wouldn't even need to be different distributions, just different installers right? Could an installer set the default language in the prefs file? Students who have a hard time finding choose a language will also have decision confusion if given a big dialog of find your class's preference in the haystack. -Ian - Original Message - From: Sam Tobin-Hochstadt sa...@cs.indiana.edu To: Matthias Felleisen matth...@ccs.neu.edu Cc: dev@racket-lang.org Dev dev@racket-lang.org Sent: Monday, April 28, 2014 10:40:37 AM GMT -05:00 US/Canada Eastern Subject: Re: [racket-dev] actionable items, was: comments on comments on learning Racket On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. In all of these cases, the language dialog needs to appear. Sam _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
They could even be different variations of DrRacket... drpyret.rkt: #lang drracket/template #lang pyret and bam! New DrRacket binary. On Mon, Apr 28, 2014 at 8:59 AM, Stephen Chang stch...@ccs.neu.edu wrote: You could have different distributions also, with the appropriate default. Tell students to get the picturing programs drracket or the Pyret drracket, etc etc. This seems like the way to go. There won't be one optimal solution for Racket's wide spectrum of users. There wouldn't even need to be different distributions, just different installers right? Could an installer set the default language in the prefs file? Students who have a hard time finding choose a language will also have decision confusion if given a big dialog of find your class's preference in the haystack. -Ian - Original Message - From: Sam Tobin-Hochstadt sa...@cs.indiana.edu To: Matthias Felleisen matth...@ccs.neu.edu Cc: dev@racket-lang.org Dev dev@racket-lang.org Sent: Monday, April 28, 2014 10:40:37 AM GMT -05:00 US/Canada Eastern Subject: Re: [racket-dev] actionable items, was: comments on comments on learning Racket On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. In all of these cases, the language dialog needs to appear. Sam _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev -- Jay McCarthy j...@cs.byu.edu Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay The glory of God is Intelligence - DC 93 _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
Of course, the big problem with different versions is that the error message may be even worse because it won't say Go choose the Racket language, since the teaching distribution may not even have that included. On Mon, Apr 28, 2014 at 9:04 AM, Jay McCarthy jay.mccar...@gmail.com wrote: They could even be different variations of DrRacket... drpyret.rkt: #lang drracket/template #lang pyret and bam! New DrRacket binary. On Mon, Apr 28, 2014 at 8:59 AM, Stephen Chang stch...@ccs.neu.edu wrote: You could have different distributions also, with the appropriate default. Tell students to get the picturing programs drracket or the Pyret drracket, etc etc. This seems like the way to go. There won't be one optimal solution for Racket's wide spectrum of users. There wouldn't even need to be different distributions, just different installers right? Could an installer set the default language in the prefs file? Students who have a hard time finding choose a language will also have decision confusion if given a big dialog of find your class's preference in the haystack. -Ian - Original Message - From: Sam Tobin-Hochstadt sa...@cs.indiana.edu To: Matthias Felleisen matth...@ccs.neu.edu Cc: dev@racket-lang.org Dev dev@racket-lang.org Sent: Monday, April 28, 2014 10:40:37 AM GMT -05:00 US/Canada Eastern Subject: Re: [racket-dev] actionable items, was: comments on comments on learning Racket On Mon, Apr 28, 2014 at 9:47 AM, Matthias Felleisen matth...@ccs.neu.edu wrote: 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. Another problem with this approach is that BSL is not the right choice for many people in the first category. They might be starting using DMDA, or Picturing Programs, or working on their own with SICP. In all of these cases, the language dialog needs to appear. Sam _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev -- Jay McCarthy j...@cs.byu.edu Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay The glory of God is Intelligence - DC 93 -- Jay McCarthy j...@cs.byu.edu Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay The glory of God is Intelligence - DC 93 _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
On 04/28/2014 10:08 AM, Laurent wrote: On Mon, Apr 28, 2014 at 3:47 PM, Matthias Felleisen matth...@ccs.neu.edu mailto:matth...@ccs.neu.edu wrote: [...] Why not something like `apply-list` or `apply/list`? (personally I usually call it `cvl` for call/values-list, but that's because I often use it on the command line, which makes going from `(foo 'a 'b 'c)` to `(cvl foo 'a 'b 'c)` effortless) (define (nth-return-value i f . s) (call-with-values (lambda () (apply f s)) (lambda l (list-ref l i unstable/list has an unexported 'values-list' macro that takes an expression and returns the list of values it produces. Ryan _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
Time to move it to a place easy to find? But why a macro? On Apr 28, 2014, at 1:10 PM, Ryan Culpepper ry...@ccs.neu.edu wrote: On 04/28/2014 10:08 AM, Laurent wrote: On Mon, Apr 28, 2014 at 3:47 PM, Matthias Felleisen matth...@ccs.neu.edu mailto:matth...@ccs.neu.edu wrote: [...] Why not something like `apply-list` or `apply/list`? (personally I usually call it `cvl` for call/values-list, but that's because I often use it on the command line, which makes going from `(foo 'a 'b 'c)` to `(cvl foo 'a 'b 'c)` effortless) (define (nth-return-value i f . s) (call-with-values (lambda () (apply f s)) (lambda l (list-ref l i unstable/list has an unexported 'values-list' macro that takes an expression and returns the list of values it produces. Ryan _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] actionable items, was: comments on comments on learning Racket
(values-list (values 1 2 3)) = (list 1 2 3) It can't be a function; a function-argument continuation only accepts a single value. As to why prefer a macro instead of a function like 'call/values-list', I think 'values-list' represents a smaller, more coherent bit of behavior. You can trivially wrap it around arbitrary expressions instead of just function calls. Ryan On 04/28/2014 01:45 PM, Matthias Felleisen wrote: Time to move it to a place easy to find? But why a macro? On Apr 28, 2014, at 1:10 PM, Ryan Culpepper ry...@ccs.neu.edu wrote: On 04/28/2014 10:08 AM, Laurent wrote: On Mon, Apr 28, 2014 at 3:47 PM, Matthias Felleisen matth...@ccs.neu.edu mailto:matth...@ccs.neu.edu wrote: [...] Why not something like `apply-list` or `apply/list`? (personally I usually call it `cvl` for call/values-list, but that's because I often use it on the command line, which makes going from `(foo 'a 'b 'c)` to `(cvl foo 'a 'b 'c)` effortless) (define (nth-return-value i f . s) (call-with-values (lambda () (apply f s)) (lambda l (list-ref l i unstable/list has an unexported 'values-list' macro that takes an expression and returns the list of values it produces. Ryan _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev