-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 10-02-12 23:38, John Clements wrote: > A user on stackoverflow had a question about this code: > > (define list-sum-odd (lambda (list) (cond ((null? list) 0) ((odd? > (car list)) (+ (car list) (list-sum-odd (cdr list)))) (list-sum-odd > (cdr list))))) > > > (list-sum-odd '(3 4 5)) > > ... which signalled an error. In #lang racket, you get > > "+: expects type <number> as 2nd argument, given: '(5); other > arguments were: 3" > > ... which is the right error for #lang racket. The response showed > him that he'd forgotten the "else" in his last clause. > > "Ho Ho!" thought I. "Beginner Student Racket will give a much > better error message." Actually, though, the error message was much > worse: it highlighted the id "list-sum-odd" in what should have > been the 'else' case, and wrote: > > "list-sum-odd: expected a function call, but there is no open > parenthesis before this function" > > ... which is really terrible, because there *IS* a parenthesis > right before the function name.
How about changing the message such that it complains about a shortage of parentheses without stating that there are none? - - expected a function call, but there is an open parenthesis missing before this function name Or maybe formulate it in a positive way to encourage the user to insert parentheses? - - expected a function call, but found a function name; to call it add surrounding parentheses Marijn -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEUEARECAAYFAk844HoACgkQp/VmCx0OL2yVKACXWLUXrftUvkaqxqMkmK0LY/UO OwCgmulM/kFmLsxoQfv4t+flPv9D4G8= =/Yj0 -----END PGP SIGNATURE----- _________________________ Racket Developers list: http://lists.racket-lang.org/dev