[plt-scheme] Scribble Problem in PLT Scheme 4.1.5

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Sat Apr 25 12:29:03 EDT 2009

Sorry -- I was wrong; the problem isn't the square brackets; it is the
lexical scope of "item" the defproc parameter masking the item the
thing in an itemize.

Robby

On Sat, Apr 25, 2009 at 11:08 AM, Doug Williams
<m.douglas.williams at gmail.com> wrote:
> I'll do a quick reload of all my packages and see if any others fail. I'll
> fix those immediately by using square brackets. It will take a bit longer to
> change all the other instances, but they don't fail.
>
> Thanks,
> Doug
>
> On Sat, Apr 25, 2009 at 10:00 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>>
>> At Sat, 25 Apr 2009 09:53:35 -0600, Doug Williams wrote:
>> > Here is the message.
>> >
>> > PLaneT packager: Error generating scribble documentation:
>> > scribblings\sets.scrbl
>> > :128:2: item: illegal use of syntax in: (item (scheme #:fifo) "---"
>> > (scheme
>> > item
>> > ) " is inserted at the end of " (scheme set) ".  The " (scheme priority)
>> > ",
>> > if p
>> > rovided, is ignored.")
>>
>> Oh, I see...
>>
>> At Sat, 25 Apr 2009 09:46:49 -0600, Matthew Flatt wrote:
>> > > > >> > @defproc[(set-insert! (set set?) (item any/c) (priority real?
>> > > > >> > 100))
>> > > > >> > any]{
>>
>> The second argument is called `item'. Scribble originally didn't bind
>> argument names in the body of the `defproc'. Now it does, and that's
>> how `defproc' communicates to `scheme' so that `@scheme[item]' gets
>> typeset as a formal argument.
>>
>> Since `item' is bound by this use of `defproc', though, `item' doesn't
>> have its usual meaning in the body of the `defproc', and the uses of
>> `item' for `itemize' don't work.
>>
>>
>> The error message needs to be improved to say something like "illegal
>> use of a formal-argument name", and I'll work on that.
>>
>> We try to avoid breaking compatibility with old files like this, but
>> there was no way around fixing the binding scopes.
>>
>>
>> To avoid this binding collisions, you have the usual options: you could
>> add `@(define real-item item)' at the top-level and use `real-item'
>> inside this particular `itemize', or you could change the formal
>> argument name `item' in the `defproc'.
>>
>
>
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>


Posted on the users mailing list.