The A Project->Where next->Quibbles
  First Encounter
  Current Status
  GNU License
Getting Started
Overview of A
  Structure of Data
  Relation to other APLs
  Language Reference
  System Fns and Vars
Where next

Vector Home


It seems a little ungrateful to moan about A+'s oddities, but to an old-time APLer it does have some funny habits. I think that on the whole, fixing the index-origin is a good thing (and if you fix it, it has to be 0) and I do like the Sharp approach to allowing the enclose of scalars. The 'Dfns' approach to scoping and localisation is also excellent, so what can I find to moan about ....


These are A+'s statement separators. Newlines are just white space to an A machine so you really do need them to split expressions in functions. However there is one splendid beartrap - the result of an A+ function is the result of the last statement executed, so if you end the last line of a function with a ';' then you execute a null statement and inadvertently bin the result. Ouch!

The control structures

OK, I know A+ was there first, but the rest of the world has moved on and I really would like to have Dyalog/APL2000 compatibility here! The Do structure is particularly weird. Possibly we could make a minor change by using :If instead of If here, and so removing the reserved words? Perhaps we should examine Eke's proposal to use {del} as a control operator? This could be a conforming extension!

The incomplete reductions and scans

What, no {not-equals scan} - Gerard Langlet would never forgive us for missing this out! Seriously, the missing outer products are really no problem (easy to achieve with Rank) and the missing inner products are also fairly harmless. I think reduction and scan really should be implemented properly for the full set of scalar functions - maybe this is one place where we need to put our hands into the core code?


I know it is trivial to implement for the integer case, but it seems a shame that A+ has stolen ! to mean 'item ravel'. I want it back, particularly as it underpins much of Norman's book.


I suppose we could look to including all the set functions (excellent for helping to promote this as a teaching resource) but unfortunately A+ has stolen {tilde} to mean 'laminate' so there is a nasty compatibility issue looming if we want it back!

The font mapping

This has to come into line with Dyadic and +Win - copy/paste really must work across interpreters. Should not be a problem if we can write our own environment - probably it can just read Dyadic-style DIN/DOT files to make the keyboard soft also.

Nearly direct definition, but not quite

Maybe we could allow {alpha} and {omega} as default arguments, or at least just allow them as local names in defined functions as I-APL does? It would be really good to be able to make use of the I-APL material directly. Probably we should double up the symbol for 'self' with {del} to come into line with Dyadic here.

Why only 9 arguments?

If you are going to have named arguments, then you surely allow for a reasonable number. To limit it to 9 seems daft, 256 would be much more reasonable. I suppose it is all to do with how you can get at the function stack in various underhand ways - hopefully we can dodge around this.

© British APL Association 2001
Please send any comments to Adrian Smith via - thank you.