From: Michael G. <mgr...@ma...> - 2004-03-10 00:21:53
|
On Tue, 9 Mar 2004, Pascal J.Bourguignon wrote: > I don't know but your code looks quite complicated. Let the lisp > reader do its work, and avoid concatenating strings like that! Yeah, I'd have to agree with you there. The code in question is essentially straight out of the Matlisp distribution. This was my first exposure to Lisp macro characters (I like it!), and after getting the hang of it a bit, I ended up re-writing the entire thing in a much simpler way that works in CLISP, CMUCL and others. > > (return-from parse-matrix-expression-1 > > (list 'make-matrix-from-reader > > (list 'quote (list n m)) > > :initial-contents `(list ,@matrix-1))))) > > Macro characters are not macros! You don't return an expression to be > evaluated, you return the data item read. Are you sure? I just finished writing a macro character that tried to return a list, but which failed with an eval error -- so I ended up inserting a quote in front of it all. Or maybe I'm misunderstanding you. > The following implementation works as well in clisp as in sbcl or > cmucl. You would have to add computing of element type. It is much > less complicated to compute the dimension while reading the matrix, > otherwise the list where I store the data could be mixed with data > lists. Thanks! I look forward to studying it. I must say, the more Lisp I learn, the more I like it and can't imagine how I used other languages. I suppose this is the general consensus :) |