[comp.windows.x] X <--> Lisp

sandell@ferret.ils.nwu.edu (Greg Sandell) (04/14/90)

This was meant to be a reply to mdellprane@vms.eurokom.ie, but
it couldn't go through. (Reason given below.) 

The message could not be delivered to:
 
Addressee: MDELLPRANE
Reason:
  %MAIL-E-USERDSABL, user MDELLPRANE cannot receive new mail
 
----------------------------------------
 
Antoine,
 
Thanks for your reply.  Doing our graphics in C or C++ and then interfacing
to them from Lisp has been something we've daydreamed about alot, but
have not yet tried.  I should mention that I work in an AI lab where
Lisp is used for just about all of the programming.  I anticipate the
following problems with foreign-functions interfaces:
 
1. Once you've endowed the interface with the amount of power and
flexibility you need, what you'll have accomplished is another CLX
(the standard lisp interface to the X toolkit, from Texas Instruments).
Why diuplicate?
 
2. If you try to do less than #1, you'll keep finding that the choices
you made will be inadequate for new things you want to do.  For
example, you might create a lisp function which takes arguments for
a button-making procedure you wrote in C.  It's a hassle to make the
call:  I expect that, before you can make the call, you have to coerce
each value into a particular byte-size and storage class, something that
Lisp makes you pay dearly for.  Then when you decide to make your
button-maker more powerful, you have to ge back to every single call
in all of your lisp code, and update it.  Ugh.
 
If you have any chance to find out about GARNET, and you're interested
in a Lisp environment for X- programming, take a look, especially at
the LAPIDARY tool.  This tool does something very similar to what
you described in point #1 of your letter.  You have a big menu of
buttons, lines, and other gadgets, and you drag them around to the
position you want them in your application, and you also define the
kines of button/keyboard interactions you want, how they will draw
themselves if relocated, and so on...all this is done by clicking
and dragging.  Lapidary will write the Lisp code for you [!] that
makes the interface you have designed, and you can go add the
features you want.
 
The drawback with Garnet is that it is very slow, and has built in
dynamic memory problems that will take quite a bit of work from the
CMU people to fix.  Oh yes (very important) Lapidary has not actually been
released yet.
 
Greg Sandell