The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

lisp interpreter

What does adding a "Lisp Interpreter" mean in developing desktop applications? Should we expose all the product functionality through some APIs that will be called from an in-built LISP editor. Are there any examples/tutorials that explain this flow?
Tuesday, August 29, 2006
I hear they're putting Lisp into emacs now.
BenjiSmith Send private email
Tuesday, August 29, 2006
In xemacs too!
smalltalk Send private email
Tuesday, August 29, 2006
Lisp is a very powerful language. One of it's strength is in being able to reperesent abstract concepts. As a result of this, it [lisp] can be used to create domain specific languages for your particular problem space.

By adding a lisp interpreter, you are effectively giving your users the ability to write plug-ins and/or macros to your desktop application using a lisp-like syntax. This code is run by the.... Yes, you are right - the interpreter you 'v included.

The GIMP for instance allows you to use lisp to write scripts.
There is another major webapp, [it escapes me at the moment] which supports lisps.
Otu Ekanem Send private email
Tuesday, August 29, 2006
I've done this sort of thing with a lot of success.  In my case, I wrote the whole Lisp interpreter in addition to the application kernels and interpreter bindings necessary to make it all work together.  It was well worth it for my applications -- it let me express the core pieces very concisely.

Whether you make the interpreter yourself or bind with an existing one, you've got to consider seriously what 'philosophy' the interpreter takes -- ie: how it sees the world.  I've made Scheme-style interpreters, Pascal-style compilers, and Erlang-style interpreters/compilers.  They all see the world much differently and require different kinds of bindings to your core application libraries.
Kalani Send private email
Tuesday, August 29, 2006
What functionality you expose should be decided based on what kinds of customization or development need to be possible. If you don't know what will be done with your tool, go back to square 1 - think about whether anyone will actually pay for it.
Jesse Millikan
Wednesday, August 30, 2006
Why did you write the entire LISP instead of embedding something that already existed?

also what characterized your erlang style effort?

very cool stuff.
Wednesday, August 30, 2006
Kamesh, adding a Lisp interpreter just means that your application can be scripted in Lisp.  For examples, look at Emacs, and Autocad.  Documentation of Emacs Lisp:
Autodesk requires registration for their developer docs, but here's one of many third party references:

Why put in a Lisp interpreter?
1. The application uses Lisp internally, and it's not much more work to expose the internals.  OR,
2. You have customers who'd like to customize the application, and they're used to using Lisp.
Thursday, August 31, 2006

Originally I wrote the Lisp interpreter at home in my spare time to understand how such a thing worked.  Eventually I brought it into work, and it was easy to integrate with existing applications and easy to extend (MzScheme is also easy, but it's always easier when you've made it yourself -- and MzScheme didn't really have anything significantly better than my interpreter in the areas I was working in).

The Erlang project has been very interesting.  I'd love to talk more about it -- maybe I'll respond to the other thread where I mentioned it.
Kalani Send private email
Tuesday, September 05, 2006

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz