[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Pika-style from first principles



On Sat, 10 Jan 2004 19:13:26 +0100, Michael Sperber <sperber@xxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:

"Marc" == Marc Feeley <feeley@xxxxxxxxxxxxxxxx> writes:

Marc> Frankly, I think this is wrong (i.e. proposing this FFI SRFI before a Marc> "higher-level" FFI SRFI is proposed). If you standardize (through the
Marc> SRFI process) low-level functionality before the high-level
Marc> functionality is worked out and standardized, you will end up with a Marc> lot of Scheme implementations which will not support it, and a bunch of Marc> users that use this FFI to write their code thinking that it is portable.

I don't follow this argument.  (Actually, I can't follow a single step
of it.)  Why does any low-level FFI automatically imply "a lot of
Scheme implementations which will not support it," and how is this
fact changed by having a high-level interface first?

I'd say the low-level stuff is exactly the place to start, because it
can be used to explain the semantics of any high-level mechanism.

Only if the low-level stuff is portable enough between implementations.
But to be portable enough you have to add abstractions, and in
the end you end up with high-level stuff.

Moreover, there are lots of ways of interfacing C code where a
high-level interface would only be in the way---specifically, when
generating the glue code from header files, SWIG-like descriptions, or
some other set of pre-existing bindings.

How come? What do you mean with "in the way"? Perhaps your particular high- level interface is insufficient?


Marc> In my experience, a high-level FFI that only supports basic types
Marc> common to C and Scheme (numbers of various precisions, Booleans,
Marc> characters, nonnull-strings and possibly-null-strings, and
Marc> null-terminated arrays of strings) is sufficient for most
Marc> applications.

In my experience, it isn't.


Great. With this style of discussion we are getting nowhere...


cheers,
felix