This page is part of the web mail archives of SRFI 50 from before July 7th, 2015. The new archives for SRFI 50 contain all messages, not just those from before July 7th, 2015.
On 27 Dec 2003 12:35:56 -0800, Thomas Bushnell, BSG <tb@xxxxxxxxxx> wrote:
felix <felix@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> writes:Exactly for that reason I propose to simplify the interface, and to remove space for dirty tricks and to specify the meaning of the forms rigorously.I am aghast that you think taking the address of a function is a "dirty trick"--especially since you are talking to a group of Scheme programmers! Good grief.
Oh, come on.
What *is* a dirty trick, and I am, I think, rightly worried about, is the dirty tricks that *implementors* play when you tell them to do things with a macro. Functions are *far* more predictable than macros; they have a single well-defined semantics. C macros can be tricky to write correctly.
You, as a user, don't have to write that macro. The dirty tricks that implementors have to play, when trying to conform to this SRFI, might be unavoidable.
I don't believe you simplify *anything* by saying "you can do this with a macro if you like". In practice, that is done in C standards precisely when you want to give implementors weird flexibility. Look at, for example, the way that errno is allowed to be a macro in C, and why.
It looks like you never designed and implemented a Scheme FFI. That flexibility on the implementors side is important. *Especially* if portability is required.
Moreover, you still will have people doing things like: #if defined (foo) do it where foo is a macre #else take the address of foo #endif
People will do all sorts of weird things. So what? cheers, felix