[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [r6rs-discuss] [Scheme-reports] redefining eqv?
On Wed, 2010-12-22 at 15:15 -0500, John Cowan wrote:
> I haven't found any Schemes except Scheme 9 on which this fails, but
> there is nothing in any Scheme standard to make it work. In C, on the
> other hand, the equivalent construction is not allowed to fail: fopen()
> is naturally definable in terms of open(), but if you define your own open(),
> it cannot affect the behavior of fopen() on conformant ISO C systems.
That's because the definition of open() (typically a macro) is captured
when an unnamed library containing fopen() is compiled (for performance
reasons). And it is typically a direct interrupt to the OS. On the other
hand, with fopen() itself, you can play LD_PRELOAD tricks, hijack other
functions from that same library, or play linker tricks or ...
>
> On the gripping hand, if you define your own length in terms of cdr
> (as is natural), you will get a failure if cdr is redefined later in the
> REPL.
>
> The problem's a mess.
>
Can we do anything about it in the interpreter besides special-casing
a whole bunch of functions from the base library?
And should we do anything about it? Not that there are no other ways of
shooting yourself in the foot (see above)...
_______________________________________________
r6rs-discuss mailing list
r6rs-discuss@x
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss