It's not clear to me that this is a symptom, or that you have identified the right fundamental problem. Function application is another syntax -- I don't just mean we implement it as one, it is one. We allow it to vary with language just like any other macro. The issue here is that part of #%app's interface is that its first argument must be a valid expression, and we want it to report problems with that before problems with the rest of its arguments. I think this really is a shallow problem.
Carl Eastlund On Wed, Nov 17, 2010 at 4:19 PM, Matthias Felleisen <matth...@ccs.neu.edu> wrote: > > That's a fix for the symptom, and it occurred to me too. > Let's try to look at the large picture, too, instead of > just looking for bandaids for symptoms. > > > On Nov 17, 2010, at 4:17 PM, Carl Eastlund wrote: > >> 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 >> <matth...@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.. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users