Erlisp: Common Lisp Meets Erlang

Just found this project in a post to comp.lang.lisp : Erlisp

(...)languages like Erlang have intriguing approaches to concurrency that are easier to use and less "low-level" than this industry best practice.
Erlisp is my attempt to bring some of these ideas to Common Lisp, and perhaps develop some new approaches in the process.

It's still vaporware, but sounds definately interesting. Maybe some of our resident Erlang & Lisp gurus (Luke? ;-) could share some ideas about it.

Comment viewing options

As long as we're talking about it...

Something I have always wondered about is meshing lexical closures with no shared state. What happens if you were to allow Lisp style "make-random-number-generator" functions that return a function that captures state and mutates it, and then want to send that function to another thread? Should its entire environment be sent with it and "forked" from the creating environment in the original process? It seems such a function is currently impossible in Erlang, I suppose the Erlang "way" might be to just make two identical processes? Can Erlang processes "simulate" lexical closures?

I really hope this is not a stupid question, but if the Erlang experts are reading, explain why I don't understand Erlang or lexical closures :), or give me a hint at what's going on.

Re: As long as we're talking about it...

Well in Erlang you usually do "mutation" by having your data in the function's parameters and then call the function tail recursively with new values. So you create a new binding instead of changing the value in the current binding. This just seems like a very neat idea to me, and it is also used extensively in Scheme.

BTW, about sending functions across the network. That's something Erlisp will not be able to do, unless a serialization CLRFI would be written and accepted that includes a standard external representation for functions. I'm not yet sure if this will ever happen, but of course I would like it to, and I will see if I can help making it happen.

Erlang and closures

Erlang does have lexical closures but it doesn't have assignment (no setf). In other words, closures are immutable just like other Erlang data structures.

Quite a major difference for an Erlisp to reckon with.

Erlisp and closures

Indeed. But there is just no way to either detect functions that would be "troublesome", nor to copy such functions to render them "harmless".

I will just disallow sending functions with Erlisp for the time being. I would really like to be able to send all types of Lisp objects one day, but that will take a lot of thought and some CLRFI writing.

Re: Erlisp: Common Lisp Meets Erlang

Actually, I talked to Luke in person in Amsterdam at the 26 September BeNeLux Lispers meeting. Nevertheless, I'm very interested in hearing everyone's ideas.

Website update

I don't know how many of the people who e-mailed me about Erlisp learned about it here, but I'd just like to say thanks for the overwhelming feedback I got. In response, I've added a page for acknowledgments and completely revised the references page.

I've also been trying to come up with good names and matching definitions for the concepts of:

• doing things "at the same time" on one machine with one processor
• doing things "at the same time" on one machine with multiple processors
• doing things "at the same time" on one machine (regardless of its number of processors)
• doing things "at the same time" across multiple machines
• doing things "at the same time" (regardless of the number of machines involved)
The preliminary results are on my newly added terminology page, but I'm not entirely happy with it, and I'd appreciate any suggestions.

By the way, I feel kind of egotistic asking this, but would Erlisp classify as front page worthy? And if so, could anyone put it there?

Re: Website update

The definitions and references seem very broad. Perhaps it would be more effective to focus directly on Erlang and Common Lisp to begin with?

would Erlisp classify as front page worthy? And if so, could anyone put it there?

Yes, the moment it's implemented. :-)

Re: Website update

The definitions and references seem very broad. Perhaps it would be more effective to focus directly on Erlang and Common Lisp to begin with? Well, eventually, Erlisp itself will be very broad. But narrowing it down a little seems like a good idea, yeah. I'll see what I can do.

would Erlisp classify as front page worthy? And if so, could anyone put it there?

Yes, the moment it's implemented. :-)

Roger that. Let's get to it. ;)