
Meta
I could look at my design and call it a day, but there's one thing I'm definitely not satisfied with.
Hup is all oriented towards the description of high-level "mental" operations. You can't parse a string of characters, or even just print a mere "hello world" to the screen. (Well yeah, you can.) But where Hup shines is elsewhere. It's vastly superior to any kind of supercharged Behavior Tree I've seen here and there, even to Plexil, and it's so friendly and pragmatic compared to Prolog. So clearly this is our target here, high-level stuff, mental behaviors themselves.
But Hup's weakness, as it is today, is metaprogramming. Sure you can have tables generating tables on the fly, and you can also switch from state-thinking to event-thinking using the natural recursion capability of formulas. But it doesn't mean it would be easy to write programs that evolve, and I don't like it. I want more.
Let me explain what we can do now. We can have tables which generate values which are other tables. These other tables are first class citizens too, no problem. Another thing we can do is using recursion to make values evolve over time by themselves, for example [ one more = [one more] 1 | 1 ] would keep adding ones to its list of values.
But meta is another thing entirely. It's about structural, it's about runtime mutation. I don't know. I have this idea of "meta-tables" in the back of my head for some time now. A meta-table would obviously contain data about a regular table. I don't know if that idea of meta-tables and this desire of metaprogramming are somehow related. All I know is that I'm not done yet.