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

Reply via email to