What deserves to be a datatype?

A lot can change in... 7 months :face_with_diagonal_mouth:

The emergence of the CHAIN! type changes the landscape, here. Because on balance, it seems we get more expressivity by allowing these ISSUE! (token?) things to be in sequences.

We might disallow them at the head, but it doesn't seem we have to make that disallowance:

>> x: '#foo:bar:#baz

>> type of x
== &(chain)

>> first x
== #foo  ; issue!

>> second x
== bar  ; word!

>> third x
== #baz  ; issue!

>> y: #"foo:bar:#baz"
 
>> type of y
== &(issue)

It does mean that the character literals for sequence interstitials have to be #"/" and #":" and #"." instead of #/ and #: and #. -- but you already had to do that for things like #"[" so I don't know if it's any great argument against it.

Like I said, there's not a no-silliness rule. :crazy_face: So if something falls out of the design and it's mechanical and unambiguous and consistent, I lean to supporting it (albeit sometimes grudgingly).

...not anymore in Ren-C... that's a CHAIN! too.

Well, now they are words (along with / and // and /// and . and .. and ... etc)

But they're in the class of things you have to use a SET-BLOCK! to set:

>> [:]: 1020

>> :
== 1020

I am leaning to saying that using SET-BLOCK!s is probably the more sane answer than trying to make exceptions for /: to be a CHAIN! with a WORD! in the first slot. The exception shouldn't be made for :: as a CHAIN! with a word in the first slot, and it's too confusing compared to [/]:

Then if you want to assign a function, instead of it being a strange exception you'd have to distribute the leading slash:

/[/]: infix get $divide
1 Like