I find this very interesting, partly because I had a similar idea (based on the experience that EQL was the most pleasant common lisp gui toolkit, but ECL is rather inferior to e.g. sbcl when it comes to Slime and debugging), but as yet haven't the knowledge or experience with lisp to be able to implement it myself.
I have been trying CL_EQL out with a little experimental GUI application I'm writing. Since I had tried to keep gui code in a separate package from the start, it was quite simple to modify the EQL ui code to work with CL_EQL. Most of it works very well.
I currently have one problem. If I wish to call a CL function from the EQL server side using '?', but wish to use the value of a server-side symbol as an argument, I can't, as the symbol name isn't evaluated until it has been received by the CL client. (It is of course possible that this does work and I simply haven't worked out the correct way to do it, but I can't find an example of a ?(function with args) in any of the examples)
For example, on the CL end, I enter this into sbcl (in case it isn't obvious, with the behaviour I want, this code would print "eql-var:2" from the CL client side):
#q(let ((eql-var 2))
?(format t "eql-var:~a~%" eql-var))
I then see this in the "EQL server":
(let ((eql-var 2))
(local-server::%remote-eval '(FORMAT T "eql-var:~a~%" EQL-VAR)) )
It appears the whole sexp following the '?' is quoted, without having evaluated eql-var on the server side.
Finally, back on the CL side, I get:
The variable EQL-VAR is unbound.
[Condition of type UNBOUND-VARIABLE]
which makes sense, because the symbol eql-var exists on the EQL server side, not the CL client. What I really wanted the server to send for evaluation by the client, was '(FORMAT T "eql-var:~a~%" 2).
I'm not sure what the best way to do this would be. I imagine, either to evaluate all arguments on the server side before sending the expression to the client, or perhaps to introduce some syntax (a bit like ',' in backquoted lists) to allow selective evaluation of symbols in the list before it is sent (It might even be useful to be able to evaluate the first symbol in order to retrieve the function name from somewhere).
Regards,
Tom