[racket] true vs. True in BSL
A student of mine is having trouble keeping track of when to use capital
vs lowercase letters---a common problem I've seen before, with any intro
language---and in particular, keeps trying to write True and False
instead of true and false. After a very strange discussion with him I
went and tested some things and was flabbergasted to discover that True
actually was a defined name of which the value is opaque and the error
messages deeply mysterious.
I get that you guys are working on Typed Racket, and I get that you
think that adding all this extra syntax into tlfka Scheme will improve
it. But I can't believe that anyone thought it would be a good idea to
expose this in BSL.
This isn't just a strange choice, it runs *precisely counter* to the
*main stated goal* of the teaching languages, to exclude from the
language anything that the students might accidentally type, that would
be valid in the full language but was "not what they meant" and not
something that they yet knew to avoid.
This one is especially insidious because the mostly opaque value of True
and False gets printed as "(make-signature ...)" which, since we *have*
talked about function signatures, seems to make reference to some other
concept which is a total red herring wrt the actual problem (at least as
far as they're concerned). Consider the simple BSL program:
;; >5 : num -> boolean
; determines whether a given number is greater than 5
(define (>5 n)
(> n 5))
(check-expect (>5 3) False)
(check-expect (>5 7) True)
This yields the test case failures:
Actual value false differs from (make-signature ...), the expected value.
at line 4, column 0
Actual value true differs from (make-signature ...), the expected value.
at line 5, column 0
I nearly filed this as a bug, and I still claim that it is one, but once
I figured out what was actually going on (and the TR connection) I
figured I'd best post it here.
--
-=-Don Blaheta-=-dblaheta at monm.edu-=-=-<http://www.monmsci.net/~dblaheta/>-=-
A diva who specializes in risqué arias is an off-coloratura soprano.