[Bese-devel] Re: LISP for web

Marco Baringer mb at bese.it
Fri Jun 10 08:48:50 UTC 2005


The following message is a courtesy copy of an article
that has been posted to comp.lang.lisp as well.

"Peter Scott" <sketerpot at gmail.com> writes:

> Could you give more details about this interpreter? What problems is it
> supposed to solve, and how does it solve them? Since I've written a
> significant real-world application with UCW and I plan to use it more
> in the future, I'm intensely interested in any upcoming major
> improvements to it.

by controlling the execution of the code (instead of just rewriting it
and passing it to the underlying lisp) we can:

1) allow mutually recursive actions; allow actions which call actions
   to be defined in any order (currently an action must be defined
   before it can appear in the body of an action which calls
   it). (this particular limitation is the "straw which broke my
   back")

2) deal with lambdas in actions. for example you will be able to
   write:

   (setf effective-users
         (remove-if (lambda (user)
                      (call 'option-dialog 
                            :message (format nil "Do you want to keep ~A?" 
                                                 (username user))
                            :options '(("Yes" . t) ("No" . nil))))
                    available-users))

3) support catch/throw and progv (as long as they don't extend outside
   the current continuation's delimitiation).

4) support multiple-values (this is doable in the current
   implementation but i never got around to actually doing it).

5) greatly improve the debugging and error reporting (the current
   transformation destroys the original code and this makes it very
   hard (even for me) to debug actions).

however we'll take a major speed hit (though in my test in time spent
executing actions is ~0 compared to the time spent copying the html to
the socket) and we'll (i'll) need to reimplement certain standard
functions (such as remove-if) to deal with continuation enabled
lambdas functions (this is where sacla comes in). 

this isn't really a 'major' feature, but it will be a big help and,
hopefully, allow people to write/debug more complicated actions.

p.s. - could we get more details on your real-world app?

-- 
-Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen



More information about the bese-devel mailing list