
Xxl – a minimal vector programming language - keyle
https://github.com/tlack/xxl
======
tlack
Hey guys, author here.

I was holding off on posting a Show HN here until I get more documentation
together, but somehow that task seems to be taking longer and longer, so I
guess it is good that this has been posted.

XXL is pretty young and a bit slow and buggy yet, but I think it has some
interesting ideas. I drew most of my inspiration from K/Q and Erlang and some
second hand APL and J.

My goal is to allow concise expression of complex algorithms, minimize magic
at the cost of some terseness and, provide a robust, composable standard API
(with stuff like mailboxes, a built-in pastebin for any data/code, really easy
to generate parse trees, and advanced looping verbs like recurse, exhaust,
deep, and wide).

You can get a sense of the language from my non-programmer introduction here:
[https://github.com/tlack/xxl/blob/master/doc/groceries.xxl](https://github.com/tlack/xxl/blob/master/doc/groceries.xxl)
(Side note: This tutorial is intended to be interacted with as a kind of slide
show of explanation and then REPL input, along with the corresponding results
from XXL. Such tool is only a fantasy, but it should help you figure out what
you're looking at here.)

Here's a mostly complete list of the verbs in the language:
[https://github.com/tlack/xxl/blob/master/doc/lang.xxl](https://github.com/tlack/xxl/blob/master/doc/lang.xxl)

The source is pretty easy to understand and of course I'd love to answer any
questions.

~~~
doublerebel
Just found this on github, looks awesome. Please do post a Show HN when you
are ready.

Love love love that this is a K/Q/erlang/APL/J inspired language that uses
common English.

Have you started on the JS translation yet? I suppose it would need to
allocate sparse arrays in order to keep performance reasonable? How do you see
that going? I would definitely use it and might be able to help if I can find
the time.

~~~
tlack
Hey there! Thanks for the kind thoughts.

I love the ideas of K/Q/Erl/APL/J but the damn specifics, syntax, and wording
is just so off-putting to most people. Frustrating because English is such a
diverse language, but we insist on using our cryptic invented terms. Plus of
course they write the documentation and tutorials as if you are solving a
riddle..

I haven't started JS yet. I had to pick and choose my battles and writing all
that in C alone was hard enough.

I did build the first version of the "concept interpreter" using JS, so it
would be pretty simple. I'd probably use fixed sized arrays and the rest of
the asm.js stack if I did. People are looking for high performance.

The key to the interpreter is simply converting each character of the source
into an item in a list, then using open ended matching primitives to convert
it into the proper parse tree, by detecting matching symbols, etc.

The problem for real work w/ XXL+JS is the 1.7gb VM limit in V8, which no one
seems to talk about. :)

Come visit on #kq or #xxl on Freenode IRC when you have time.

