
ELI – A System for Programming with Arrays - emmanueloga_
http://fastarray.appspot.com/
======
pavlov
APL is fundamentally cool and I'd like to think it will make a comeback. But
it seems that most modern APL-derived languages focus on trying to squeeze
everything into ASCII as concisely as possible.

The following is an example of quite readable ELI with only a handful of
symbols:

    
    
        c,[1.5]32+1.8*c<-$_10+5**!10
    

It's not bad, but when all you have is ASCII, dense notation will inevitably
look like line noise.

APL's graphical notation was one of its original inventions, but custom
keyboards weren't a viable solution in the PC era... But today the situation
is different again. High-DPI displays and touch screens are becoming standard.

Would it be possible to reinvent APL notation to take advantage of high-res
graphics and natural input methods? I'd love to see a tablet-only reinvention
of APL that doesn't have a keyboard at all, just a number pad and painted
gestures.

~~~
klibertp
Honest question: if I know J, what can I get from learning APL? When first
looking at array based languages the symbols used by APL scared me off and I
decided to go with J, now I wonder if the very same symbol set wouldn't be
better than pure-ascii.

~~~
fvt
IMHO learning about a new language (without becoming proficient with it) is
always good as it makes you think about the one(s) you're proficient with.

~~~
klibertp
> learning about a new language (without becoming proficient with it)

Mostly true, but there are languages which are completely useless without
becoming proficient with them. In my experience Forth and J are such
languages: you can "learn about" them, but you won't really understand them
without using them for some time. So I suspect APL, K, Q and Eli here are
similar; the question is what will I gain from becoming proficient with one of
them or alternatively is it worth becoming proficient in one of them if I'm
already proficient with another.

------
jarpineh
We have some pretty significant matrix processor apps made with APL at the
company.

I'd really like to bring this functionality to our web apps, but it seems HTTP
interface and external APIs are not available in these implementations. How
can you use ELi, or any APL, with a web app?

ELI site is down at the moment, but I read couple of their docs through google
cache. There is support of compiling into C, but what about support for C
interface? Or HTTP out of the box?

~~~
JoachimSchipper
CGI - or, if you insist, FastCGI - works surprisingly well in 2014.

~~~
jarpineh
Well, yes. Simple solutions work too. I was burned trying to write
sophisticated Python stuff with plain CGI back in the days of Apache 1.3.

~~~
JoachimSchipper
CGI does need something that can start in at most one geological age, yes.
FastCGI is, well, faster, and is pretty simple as long as you don't support
multiple concurrent requests to a single backend.

------
wukefe
Please check a mirror website here
[http://cs.queensu.ca/~chenh/eli/](http://cs.queensu.ca/~chenh/eli/), if you
find the [http://fastarray.appspot.com/](http://fastarray.appspot.com/) is not
accessible.

Hanfeng Chen

------
JoachimSchipper
You may also like
[http://prog21.dadgum.com/114.html](http://prog21.dadgum.com/114.html), which
is a slightly gentler introduction to the APL world.

~~~
emmanueloga_
Cool, will check it out!

There are lot of recommended books about a selection of languages regarded as
more powerful/expressive/safer than the mainstream, but there's not so much
good information about APL, I don't think. Every now and then, I hear
different people give a hint about APL's power (not too noisily though... as
if they did not want to completely give away the secret :).

I keep wondering what problems are good fit for it. From far it doesn't look
like a general purpose PL. To my untrained eyes it looks like some sort of
query language that you can somehow bend into doing other things (in the same
vein you can use SQL to render the Mandelbrot set [1] :).

And then there's the whole clones/successors/spin offs situation. If I were to
learn APL today, I wouldn't even know were to start. ELI looks like a good
candidate.

\--

1:
[http://wiki.postgresql.org/wiki/Mandelbrot_set](http://wiki.postgresql.org/wiki/Mandelbrot_set)

~~~
RBerenguel
There's GNU APL as a free APL implementation. As for learning APL... It's
essentially learning what all its symbols do (there are some references for
free online from the vendors of paid APLs, just avoid reading about their
extensions,) even Wikipedia's page about APL works as a fast reference. I just
use it to play around with numbers (yes, I also wrote a Mandelbrot set with
it, a one liner that fits in a tweet,) and I'm trying to enhance a little its
usability with a iPython-like in-browser "REPL" specially suited for my uses.

------
mamcx
Exist a array language with more "normal" sytax (ie: more like python than
APL, so instead of symbol use words?)

~~~
tlack
Check out Q from Kx Systems. It uses an SQL-like dialect but is still powerful
and expressive. Here are some simple example programs:
[http://code.kx.com/wiki/Sample_Queries](http://code.kx.com/wiki/Sample_Queries)

~~~
mamcx
I have seen this before, but now I do the tutorial and the experience was not
as bad as I have imagined.

I hope to draw some idead from it (I'm triying to build a relational language)

~~~
tlack
Keep me in the loop as you work on your project. I think the world has a lot
to learn from array languages, and there still isn't a strong open source
option. Contact info in profile.

------
couchand
Am I the only one reminded of Abre Los Ojos?

------
biomimic
How well does it work when doing matrix multiplication or combining arrays in
comparison to standard methods in R, matlab etc.?

