While I have a place in my heart for APL and its derivatives, my problem is that I can't use it outside its finance niche. I have several books on APL and its applications, looked into some implementations, but I didn't find a way to bring it into my current projects.
Then the community is kind of dying out, at least over here (Germany).
This is really bitter for me. APL is fun with the intellectual satisfaction that comes from arranging the symbols, the beautiful theoretical background and the clear approach to doing things.
It doesn't have the nice symbols that APL uses, but I've been tinkering with a graphical programming environment for K, one of APL's younger cousins. This evening I wrote a crude version of breakout:
How hard do you think it would be to write a similar SDL wrapper or the like for your favorite APL implementation? I'm finding that K can be remarkably pleasant for solving many of the problems that come up in games- movement, pathfinding, manipulating raster graphics all fit well into the vector- and matrix-oriented programming paradigm.
Sorry, I was being unclear. The environment I wrote my game in is not an SDL wrapper- it's all javascript and HTML 5. It is called iKe and it is indeed open-source: https://github.com/JohnEarnest/ok/tree/gh-pages/ike
I was suggesting that it might be possible to use some graphics library (such as SDL) to write an equivalent to iKe for other APL-family languages.
This looks really neat. It may even give me a reason to learn K :)
I'm still not sure I totally understand. Are you suggesting that it would be neat to rewrite things in ok/examples or ok/ike/examples in APL and provide the draw function? Would that be enough to take advantage of what you wrote? What else would be needed?
iKe works by running a K script, which includes both calculating static data and defining some selection of functions. It then calls K functions in response to various events- mouse clicks, key presses, etc. K programs define handlers for the events they're interested in and ignore everything else. The "draw" function is the only one which is strictly required, and it returns a list of tuples which represent some bitmaps to blit to the display. It and "tick" (if present) are called repeatedly and automatically by the system to permit animation and so on.
iKe is designed to be similar in usage both to the kOS "Z" windowing library (details are unknown, but there is one example program available to the public: http://kparc.com/edit.k) and Processing, a Java-based environment aimed at beginners and artists.
I'm suggesting that other APLs could be equipped with a similar setup to what iKe provides- export an APL module with some set of event handlers and at least a definition of a "draw" method, and then use some cross-platform UI toolkit to feed the APL events and render its results for the outside world.
It would be easy to make bitmap data with APL. What is the output of the "draw" being processed by, (or where)? From there, I think it would be easy to see where to wedge in APL.
"draw" specifically returns a list of tuples which each consist of a position (or a vector of positions), a palette of colors and then a single pixel, a vector of pixels or a matrix of pixels. (Call it a rank 0, 1 or 2 bitmap, if you like.)
It's useful on all kinds of transactional/bigger data, IMO (up to ~1e9 rows). It's also extremely useful as a prototyping language for complex mathematical ideas.
I just can't use it in my target environments for community reasons (space, AI).
Just in case, a good implementation (e.g. GNU APL, Dyalog) to recommend (performance-wise)? I also tried J years ago, but not on larger data sets or computationally expensive things. My experience and overview is pretty dusty.
It's mostly literature from the 1970s and 1980s, usually in German. APL explained (basics, data structures, algos), APL applied to AI, math, statistics, etc. Nothing that beats Iverson's written works.
Then the community is kind of dying out, at least over here (Germany).
This is really bitter for me. APL is fun with the intellectual satisfaction that comes from arranging the symbols, the beautiful theoretical background and the clear approach to doing things.