[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Symbolics (or is it ILA?) C environment
Date: Tue, 30 Jul 1991 21:09-0400
From: barmar@Think.COM (Barry Margolin)
Date: Tue, 30 Jul 1991 17:46 EDT
I'm curious as to people's opinions about the C environment that's
been built for the Symbolics (I don't remember whose product this
How is the function calling interface? It is easy to call Lisp
functions from C, and vice-versa? What kind of a C library exists,
i.e., does the C library reflect that on some popular version of Unix?
Is there a plan afoot to implement some dialect of C++?
Calling between Lisp and C isn't too bad for scalar data types.
However, for some data types it can be a pain. For instance, C pointers
are passed as two arguments (an array and an offset), and passing a Lisp
string to C requires converting it to an array of fixnums and adding the
zero byte. It would be nice if they had DEFINE-FOREIGN-FUNCTION and
DEFINE-FOREIGN-CALLABLE macros like Lucid does, which take care of all
the type conversions (I've got the beginnings of this written, but it
only supports a few data types and few options). It looks to me like
they left these out because they thought that they were mostly used for
linkage purposes, which isn't a problem on the Lispm.
The C pointer mechanism is lossy (as I recall) because it interfers with
VOID data type casting. In my brief exposure to it there is no way to
type cast pointers, play with them and then type cast them back to
pointers. Of course this is really questionable behaviour from a Lisp
hackers point of view, but I couldn't figure out any other (reasonable)
way to accomplish Lispy things in C.
The library is just the functions required by the ANSI C specification.
I seriously doubt there are any plans to enhance it. It was mostly
implemented before the C standard was finished, and I don't think it has
been brought up to date with any changes that were made to the standard
between the draft they worked from and the final standard. There seem
to have been few changes to it other than bug fixes since it was first