[Gsll-devel] [iterate-devel] Fwd: iterate form evaluates but does not loadinto sbcl fasl

Liam Healy lhealy at common-lisp.net
Tue Feb 9 20:25:23 UTC 2010


OK Mirko, fixed and pushed.  Thanks for chasing this down.

Liam

On Tue, Feb 9, 2010 at 1:11 PM, Mirko Vukovic <mirko.vukovic at gmail.com> wrote:
> See below for the fix.  Thank's to everyone's help and suggestions.  I still
> have only a dim understanding of what is going on.  But I am only in year
> three of the 10-year lisp journey :-)
>
> On Tue, Feb 9, 2010 at 9:54 AM, Mirko Vukovic <mirko.vukovic at gmail.com>
> wrote:
>>
>>
>> On Tue, Feb 9, 2010 at 9:30 AM, <Joerg-Cyril.Hoehle at t-systems.com> wrote:
>>>
>>> Mirko,
>>>
>>> >Are you implying that instead of lambda forms one should define the
>>> >functions and use function names.
>>> No. Just look at the examples in the source code, incl. tests.
>>> The key is to write #'(lambda ...) aka. (function (lambda ...)), not
>>> (lambda ...)
>>
>> Like this?
>>
>> (defclause-sequence matrix-row matrix-row-index
>>   :access-fn
>>   #'(lambda (grid index)
>>     (assert (and (grid:gridp grid) (eql (grid:grid-rank grid) 2))
>>         (grid))
>>     (grid:row grid index))
>>   :size-fn
>>   #'(lambda (grid)
>>     (assert (and (grid:gridp grid) (eql (grid:grid-rank grid) 2))
>>         (grid))
>>     (first (grid:grid-dimensions grid)))
>>   :element-type t :sequence-type t
>>   :element-doc-string "(copied) rows of a matrix"
>>   :index-doc-string "index of the rows in a matrix")
>>
>> Unfortunately, that did not help improve things.
>>
>> Also, the iterate documentation has an example of `defclause-sequence'
>> (bottom of p.26 of the pdf file).  There is no #'(lambda ...), just plain
>> (lambda ...)
>>
>> Thank you for your time,
>
>
> The fix was to put a single quote in front of the (lambda ...) expressions
> like this:
>
> (defclause-sequence matrix-row matrix-row-index
>   :access-fn
>   '(lambda (grid index)
>       (assert (and (grid:gridp grid) (eql (grid:grid-rank grid) 2))
>           (grid))
>       (grid:row grid index))
>   :size-fn
>      '(lambda (grid)
>       (assert (and (grid:gridp grid) (eql (grid:grid-rank grid) 2))
>           (grid))
>       (first (grid:grid-dimensions grid)))
>   :element-type t :sequence-type t
>   :element-doc-string "(copied) rows of a matrix"
>   :index-doc-string "index of the rows in a matrix")
>
> Not #'(lambda ...).  The same goes for named functions.  Thus 'foo and not
> #'foo.
>
> Mirko
>
>
>
>
>
> _______________________________________________
> Gsll-devel mailing list
> Gsll-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/gsll-devel
>
>




More information about the gsll-devel mailing list