APL Library

I’ve been staring at a list of workspaces that make up APL Library (https://sourceforge.net/projects/apl-library) for more than a week trying to get inspired. Why did I start this thing in the first place?

I remember discovering GNU APL. I had purchased a copy of STSC APL thirty years ago. I still have it, and with a Linux DOS emulator I can still run it. I spent $500 for a license. At odd moments I’d go to IBM’s website to see what a license costs these days and then move on to something else.

Suddenly, all I had to do was download GNU APL and compile it. I was sold right there.

I found a printout of an editor I wrote in 1983. I tediously typed it into a new GNU APL workspace. I haven’t used it since I got it working. I like Emacs better.

I started work on APL Library almost immediately. My first pass was porting utilities that I had written in the STSC days. I discovered that porting was not exactly what I had to do. Retyping is a better description. As I learned APL2, which has features not present in the old APL, I discovered that many of these utilities weren’t relevant.

∆TAB is a good example. I copied this function out of APL: A Design Handbook for Commercial Systems, by Adrian Smith, Wiley, 1982. Its left argument is the delimiter used in its right argument. It returns a character array in which each item in the right argument is a line in the array.

Now I just enter the list ‘First item’ ‘Second item’ ‘Third item.’ Aren’t nested arrays a wonderful thing? (In APL each character string is an array. In APL2 one can combine several character strings into a nested array.)

I soon discovered that APL2 addressed many of the things I’d struggled with so much I abandoned the whole project.

At the same time there were many things I needed and an equal number of things that were just neat. utf8∆saveVar is a good example. This function writes a new workspace to disk with the code to generate one variable in the current workspace.

I spend way too much time keeping books. At the end of each quarter I do a bank reconciliation. It’s a tedious task, and with luck, having proved my work for that quarter, I’ll never have to look at that work paper again.

I am not a lucky guy, so I save the reconciliation with utf8∆saveVar.

APL Library is a combination of the flashes of insight like utf8∆saveVar and the tedious struggle to set up plebeian things like my date workspace. All in all it serves me well.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *