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@gmail.comwrote:
On Tue, Feb 9, 2010 at 9:30 AM, Joerg-Cyril.Hoehle@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