"Extension Types" Implementation (On Hold)

Note that extension types were removed--at least temporarily--because there were more fundamental things in the type system which needed to be resolved.

However, a similar approach is likely to be re-added once things settle down, that similarly reserve one of the 4 platform-pointer-sized slots for type information.

Of this byte, only 64 of the states are used in R3-Alpha--and I believe Red. This was chosen instead of 256 in order to limit the number of kinds that need to be handled in a TYPESET! to 64 bits...making typesets small enough to fit in the rest of the cell. (That simplicity is nice for implementation, but points to a pretty big weak spot in the type system for more sophisticated purposes...which new designs will be needed for!!)

Though the "unlimited" number of types from extension types is on hold, the basic limit of 64 fundamental types has been lifted to 256.

It might sound like a small thing to implement, but rigging it up to work and not perform terribly involved some thinking.

You can see some of these new types and SIGIL! here:

REIFY and DEGRADE: a Narrower META and UNMETA

You can do as you wish with them in dialects, but the evaluator meaning is specific...and I definitely do want to put together a presentation explaining why they are all necessary and what they do.

Last year I didn't get all that much done (more has happened in the past two months than all of last year). But there were a few things:

2023, Another Year 💨 A Few Things That Happened

1 Like