Author here! Sadly the implementation is pretty slow and very memory leaky but I still like a lot of the ideas that XXL explored. I hope to have some kind of spontaneous mental breakthrough in the future and jump back into it.
I've been thinking about making a language since 2004 or so but never actually made a serious attempt. I worked on XXL by myself for about four months with the support of my employer. I'm kind of an idiot so I had to learn a lot of stuff to make any progress at all.
The hardest part was figuring out how the execution mechanism would work - what exactly happens when code is evaluated, etc. There is obviously tons of prior art to look at from other languages but I wanted to take my own more minimal approach to the problem and not design an entire virtual machine with bytecode, etc.
XXL is array oriented. All values are arrays, even what are usually considered scalar values. Verbs decide how they should behave with single item array arguments. Verbs like the math functions automatically apply themselves to the entire array. This removes a lot of need for looping constructs, which are discouraged in XXL. Some examples:
3,6,9 * 3
(9,18,27)
3 * 3
9
Let me know if this makes sense so I can update the readme correspondingly.
That's true. It's off-putting and looks ugly to most people.
One of the quirky things about the vector language community is that many of us like to write "wide" code that uses the whole line. The goal is to have as much of the program visible on-screen at one time as possible so you can minimize scrolling around, having to open other files, etc.
I was skeptical at first but I came to like coding in that way. I noticed that when I have to pull up that library's source to look at how something works I sorta lose track of what I was doing and that's how bugs happen.
Of course that example code isn't really a shining example of the practice and should be reworked. Tutorial stuff shouldn't feel dense. Thank you for the feedback.
In my humble defense, the latter half of that example (from "'test is { ... }") is the "JSON" encoder being tested / used! But this example could definitely use some work if its going to be featured prominently.
I really don't understand the examples. Would be great if the readme could start with some easy examples and build on them (rather than starting with a parser).
Even worse - it's an encoder, not a parser. I really need to rethink these docs and basically start from scratch. What programming language docs do you really like?
Previously on HN: https://news.ycombinator.com/item?id=11379461
Also, kick - enjoying your vector language submissions on HN lately, keep it up