Re: Low-level things
[email protected] (James A. Crippen)
| Newsgroups | gmane.lisp.movitz.devel |
|---|---|
| Message-ID | <[email protected]> |
Frode Vatvedt Fjeld <[email protected]> writes: > I've tried to introduce the % notation from the lisp-machines. It's my > understanding that operator-names beginning with % signalled an unsafe > operation, that if not used with care could damage the run-time > invariants. Yes, the % operators are those which should be considered wizardly incantations not for use by mere mortals, but only by Masters Who Know What They Are Doing. % functions were assumed to not do any sort of safety checking on their arguments. Often a %FOO operation disregards type information, and may correspond to a single low-level machine instruction, like %LOGDPB or %CRASH. They might be used by people who wanted faster code in certain places, and who could guarantee safety by other means. There are also %% constants which contain assorted bits and bytes that are supposed to be unknown or invisible to anyone but implementors. Like %%Q-HIGH-HALF, %%PAGE-HASH-TABLE-AGE, or %%KBD-ALL-CONTROL-BITS. I don't think that %% were ever functions, only constants. They were definitely not for ordinary users. Also, the SI package was the container for a large amount of the system. It stood for SYSTEM-INTERNALS or something like that. It was where things inside the system that were meant for Mere Mortals to use were exported as external symbols. SBCL calls the same thing SB-SYS and SB-EXT, I think. 'james -- James A. Crippen <james at unlambda.com> Lambda Unlimited 61.2204N, -149.8964W Recursion 'R' Us Anchorage, Alaska, USA, Earth Y = \f.(\x.f(xx))(\x.f(xx))