[armedbear-devel] User-extensible sequences?
I was looking for something similar to lazy lists or iterators in CL and asked a friend who told me about the following paper (abstract see below): http://www.doc.gold.ac.uk/~mas01cr/papers/ilc2007/sequences-20070301.pdf Is this something worthy of inclusion into ABCL? -- Axel.Rauschmayer@ifi.lmu.de http://www.pst.ifi.lmu.de/~rauschma/ User-extensible sequences in Common Lisp Christophe Rhodes Common Lisp is often touted as the programmable programming language, yet it sometimes places large barriers in the way, with the best of intentions. One of those barriers is a limit to the extensibility by the user of certain core language constructs, such as the ability to define subclasses of builtin classes usable with standard functions: even where this could be achievable with minimal penalties. We introduce the notion of user-extensible sequences, describing a protocol which implementations of such classes should follow. We show examples of their use, and discuss the issues observed in providing support for this protocol in a Common Lisp, including ensuring that there is no performance impact from its inclusion.
On Wed, Jan 6, 2010 at 3:42 PM, Axel Rauschmayer <axel@rauschma.de> wrote:
I was looking for something similar to lazy lists or iterators in CL and asked a friend who told me about the following paper (abstract see below): http://www.doc.gold.ac.uk/~mas01cr/papers/ilc2007/sequences-20070301.pdf
Is this something worthy of inclusion into ABCL?
I would love to have that in ABCL! Besides your use case, I'd like to use such a feature to make Java collections be first-class citizen in Lisp. That would mean easier integration with Java, and the possibility to use the Clojure collections "for free", since I read that they implement the standard Java collection interfaces. I believe ABCL's sequences implementation is derived from CMUCL's, and since SBCL is a fork of CMUCL, porting them from it could possibly be not very hard. It's definitely something I'd like to work on, and I've been thinking about that on and off for some time. I can put some time into it in the near future; if you'd like to join efforts, you're welcome! Bye, Alessio
Unfortunately, I'm currently busy finishing my Ph.D. thesis. Afterwards (early March), I plan to do the following things: - Write a manual that gets Java programmers started with ABCL as quickly as possible. I'm currently learning CL and there is a lot of potential for speeding up the learning process. Even though I know a bit of Scheme, I'm a complete CL newbie, so my perspective should help here. - Evangelize ABCL. ABCL could become a lot more popular than it is, especially considering the growing popularity of Clojure. I prefer ABCL to Clojure, because I don't like some of the decisions that Clojure has taken. I am one of InfoQ's "Most Valued Bloggers" and think that their audience would be interested in small blog posts pointing out cool things you can do with CL that Java cannot do. - Write a framework for Ajax programming that is based on ABCL, Parenscript and the RDF database Sesame. It is supposed to become a mix of Ruby on Rails and GWT, with an RDF database backend. The next version of Hyena [1] will be based on this framework (and/or actually be that framework). In general, I'm amazed how well ABCL works and how quickly it progresses. The two greatest current weaknesses that I can see (mind you, on the road to true perfection) are: - Java integration. In both directions. The ABCL killer feature is that it runs on the JVM. If façades to Java libraries were easier to write, one could be even more productive with it. - Concurrency. I don't like Clojure-style concurrency. I would expect fork-join and actors to be relatively simple to add to ABCL, given the direction in which Java 7 is going. Let me know if I should elaborate on any of these points. All other things that I can think of seem to be already worked on: Slime, ASDF-install-like package installer (ASDF-install itself? Lispy?), and (now) better collections. [1] http://hypergraphs.de/hyena/ On Jan 6, 2010, at 20:59 , Alessio Stalla wrote:
On Wed, Jan 6, 2010 at 3:42 PM, Axel Rauschmayer <axel@rauschma.de> wrote:
I was looking for something similar to lazy lists or iterators in CL and asked a friend who told me about the following paper (abstract see below): http://www.doc.gold.ac.uk/~mas01cr/papers/ilc2007/sequences-20070301.pdf
Is this something worthy of inclusion into ABCL?
I would love to have that in ABCL! Besides your use case, I'd like to use such a feature to make Java collections be first-class citizen in Lisp. That would mean easier integration with Java, and the possibility to use the Clojure collections "for free", since I read that they implement the standard Java collection interfaces.
I believe ABCL's sequences implementation is derived from CMUCL's, and since SBCL is a fork of CMUCL, porting them from it could possibly be not very hard.
It's definitely something I'd like to work on, and I've been thinking about that on and off for some time. I can put some time into it in the near future; if you'd like to join efforts, you're welcome!
Bye, Alessio
-- Axel.Rauschmayer@ifi.lmu.de http://www.pst.ifi.lmu.de/~rauschma/
participants (2)
-
Alessio Stalla
-
Axel Rauschmayer