3 ms·
What's ironic is the current "major" implementation of APL, Dyalog, doesn't optimize generation and processing of large vectors by treating them as streams. IO
by colanderman 15y ago
What's ironic is the current "major" implementation of APL, Dyalog, doesn't optimize generation and processing of large vectors by treating them as streams. IOW, creating a sequence 1 to 1 million actually takes up 1 million * sizeof(double) bytes. It's sorely disappointing.
- silentbicycle 15y agoWhich is odd, because that optimization has been known in the APL community for a long time. Edit: They probably have their reasons for not including it. I don't know anything about the Dyalog implementation internals. See e.g. Abrams's "An APL Machine" (http://www.slac.stanford.edu/pubs/slacreports/slac-r-114.html http://www.slac.stanford.edu/pubs/slacreports/slac-r-114.htm...) from 1970, where he describes them as 'drag-along' and 'beating'. Essentially, lazy evaluation, but done in bursts to take advantage of many of APL's other properties. I'm currently working on adding this to Kona (http://github.com/kevinlawler/kona http://github.com/kevinlawler/kona), part of a virtual-machine-based reworking of the implementation.
- colanderman 15y agoGood to know Dyalog isn't a representative implementation of APL.
- deleted 15y ago[deleted]