[racket] confusing error with keywords

From: Carl Eastlund (cce at ccs.neu.edu)
Date: Wed Nov 17 16:17:54 EST 2010

Personally I would like to see the error here be that
define-struct/contract is not bound.  If the order of either top level
expansion or #%app worked slightly differently, we could get that
error first and all would be clear.

Carl Eastlund

On Wed, Nov 17, 2010 at 4:15 PM, Matthias Felleisen
<matthias at ccs.neu.edu> wrote:
> Isn't the true problem that we pretend uniformity of syntax and values? In this case, we specifically pretend that functions and syntaxes may consume the same kind of keyword-labeled arguments. Except that when you make a small mistake, the brittleness of this arrangement shows up and you get WEIRD ERROR MESSAGES.
> When systems work, nobody cares how they work. It's errors that make people notice, and errors happen all the time.
> On Nov 17, 2010, at 3:55 PM, Jon Rafkind wrote:
>> I found this error message confusing. The problem is I forgot to require
>> racket/contract.
>> #lang racket/base
>> (define-struct/contract foo ([a any/c]) #:transparent)
>> application: missing argument expression after keyword at: #:transparent
>> in: (#%app define-struct/contract foo ((a any/c)) #:transparent)
>> I was confused because I thought I had a (require racket/contract)
>> somewhere but apparently I didn't. I don't know if anything at all can
>> be done about it..

Posted on the users mailing list.