Vector Languages
  • Array Offsets from Indices Are Multibase Digits

    by Vanessa McHale | Vector Languages

    J's #: (base) can be used to compute the offset of an array element as it would appear in memory. Why so? x #: y is +/w*y, where w is formed as */\.}.x,1w is precisely the strides of an array with dimensions x.

  • C Is Not Suited to SIMD

    by Vanessa McHale | Vector Languages

    C (C++) is used to write performant software, however it is ill-suited to SIMD. In particular, its compilation of stepped reduction with lexical scoping opposes parallel execution.

  • QuickCheck With Shape Types

    by Vanessa McHale | Vector Languages

    One motivation for Apple was demonstrating typed array programming. Shape types are rich; we can use types as witnesses as in QuickCheck, generating test cases that are shape-correct.

  • Optimizing Array Code With Inferred Type Information

    by Vanessa McHale | Vector Languages

    Apple, being a JIT compiler with shape types, is able to do a number of optimizations based on inferred dimension (and rank). Rank is almost always known in practice, so such optimizations are pertinent.

  • Statically Typed Interactive Array Languages: a Manifesto

    by Vanessa McHale | Vector Languages

    I implemented the Apple array system with the aim of tidying up some of the shortcomings of J, with which I am familiar.