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