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

Mirko Vukovic mirko.vukovic at gmail.com
Tue Feb 9 18:11:29 UTC 2010


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/iterate-devel/attachments/20100209/be228a5d/attachment.html>


More information about the iterate-devel mailing list