So I'm aiming at what you suggest--even going as far as to reorganize the posts here "wiki-style" to cull dead-ends, and make start-to-finish design summaries.
For example:
The History of Multi-Return in Ren-C
Doing this maintenance is an ongoing task... and I can't stop working on things to do focus solely on documentation. But if there's something specific you are curious about, I can raise the priority of organizing the information here on that topic better.
Using tagging on the forum more effectively is a good idea. But there are also categories, and there is a Feature Discover one which could be better.
For now...I can give you a couple of quick pointers that should be plenty to occupy you. (You can try Ren-C in the browser at the online ReplPad, but please do not advertise it to the world at large. It is not meant to be published broadly yet.)
Isotopes and Quasiforms/Antiforms are explained reasonably well. READ THIS CAREFULLY:
A Justification of Generalized Isotopes
As for UPARSE, the best place to get a sense of what it can do is probably the tests. Each combinator has its own file:
https://github.com/metaeducation/ren-c/tree/master/tests/parse
It could be made somewhat easier, but understanding is always a fundamentally hard thing.
Regardless of how much work I put into documenting, understanding requires patience... putting in effort... and asking questions when you don't understand.
I think you will find it very worth it. The details are addressing important points... including this one from you (as I've mentioned before) that you brought up in Red Gitter (archive.org
link, as I guess Gitter scrapped their history...lovely)
"When code is data and data is code, sometimes you can't distinguish a situation from a value:"
>> a: [b c #[none!]] >> probe type? probe pick a 3 none none! >> probe type? probe pick a 10 none none!
"None is returned either as an element picked from a block and when we are out of the boundaries. In any function of this kind, you have to create another one to check if we are in a situation that returns None. It's just a personal thought spoken out instead of remaining in my mind."
Couldn't have said it better myself. And this is why things like antiforms exist, which can't be put in blocks. But then that raises the question of what your options are when you want to put a representation of that state in the block... which is why quasiforms exist.
>> a: [b c]
>> pick a 3
== ~null~ ; anti
>> append a null
** Script Error: append expects [~void~ element? splice?] for its value argument
>> append a meta null
== [b c ~null~]
>> pick a 3
== ~null~
>> null? pick a 3
== ~false~ ; anti
>> unmeta pick a 3
== ~null~ ; anti
>> null? unmeta pick a 3
== ~true~ ; anti
If you think Rebol-family languages are interesting, I see almost no way to not find Ren-C interesting. But somehow the Red people accomplish it. There's a difference...
"It is difficult to get a man to understand something, when his salary depends on his not understanding it."
-- Upton Sinclair"Convictions are more dangerous enemies of truth than lies"
--Friedrich Nietzsche.