Starting in the middle:
This is simply going back to what I said originally: ‘The closest to an explanation I’ve found is that these types are useful in dialecting’.
But then, if you’re willing to accept that as sufficient reason for syntax to exist… well, you can use that to justify basically any syntax, as indeed I once tried to do:
The lesson I took out of that discussion is that adding syntax purely for usage in dialected code is a bad idea, because it’s impossible to know where to stop.
That being said, beyond dialecting, it is pretty useful to have this distinction of ‘this list represents code, evaluate please’ vs ‘this list is just a list, do not evaluate’. After all, it’s nice to be able to pass around lists without worrying that they’ll be evaluated randomly. And it makes sense to store that distinction on the datatype, rather than as a refinement (cf. /ONLY vs antiforms). So, on balance… yeah, I think THE-* is starting to make much more sense to me now.
Ah-ha, I keep on forgetting that Rebol uses TUPLE!s for access within an object. (In my defense, historical Rebol didn’t use dot-syntax, and neither do some of the languages I use daily, so I sometimes forget it exists.)
Although… then again, this looks like it’s yet another instance of ‘syntax which is only useful in dialects’. That still bothers me, for the reasons I already mentioned.
OK, I didn’t even think of that possibility. That makes sense.
I disagree with it though, for two reasons:
- I think MONEY! is actually very useful. Working with money requires specialised requirements (e.g. fixed-point storage), which can be a bit painful — so having that type built-in to the language eliminates a whole class of subtle errors. And, of course, all kinds of software requires working with money.
- I think positional substitution is a particularly annoying kind of substitution. I use it in Bash, and hate it. I’d much rather do something like
substitute [a b $bar c d $foo e f] {foo: <some> bar: <thing>}
, which is less error-prone and more descriptive.
So, I’d rank them the other way around: MONEY! is most useful, and DOLLAR-INTEGER! is less useful.
Admittedly, I would do the same. But for a general-purpose language I think MONEY! is important and very useful.
I couldn’t really tell you; I’ve always just had very broad interests. And linguistics has always been one of my favourite areas.