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

Rebinding of standard functions




Well, having been responsible for kicking this off, let's see if I can
divert the deluge.  I apologize for the furor my ignorance has loosed...

There is merit on both sides of the arguments for and against
redefining standard functions.  On the FOR side, people correctly
point out that it is extremely useful to be able to extend the
existing primitives.  On the AGAINST side, people correctly point out
that this prevents efficient code generation and leads to hard-to-find
errors.

While the efficiency and [human-]correctness arguments have no bearing
on the mathematical soundness of the language, I don't think it
inappropriate to try and address these concerns if it can be done
without jeopardizing that soundness.

Some will undoubtedly point out that such hacks as

	(letrec ((+ `,+)
		 (- `,-))
	  ..body..)

already address the need.  While this is true from a formal
standpoint, it renders debugging difficult and substantially detracts
from the readability of the code.

Perhaps the time has come, in the interest of portability, for an
attempt to be made to resolve this issue.

First, is this appropriate, and if so, what is the mechanism used to
accomplish this sort of thing in the scheme community?

I would volunteer to think about this a while and propose a solution
[AFTER reading through the archives...], but I wonder if in my
ignorance I won't stir up more problems than I resolve.

Any reactions?

Jon Shapiro