Vanessa McHale
  • A Proper X86 Assembler in Haskell Using the Escardó-Oliva Functional

    by Vanessa McHale | Haskell

    Writing an assembler turns out to be an interesting example: one needs to calculate distances between jumps and their target labels, and the target may appear after the label. It turns out that one can write a one-pass assembler using the tardis monad or in Curry, using logic programming.

  • Lessons from Arthur Whitney's Style

    by Vanessa McHale | Arthur Whitney Style

    Arthur Whitney is (in)famous for his laconic style. The following is a memory allocator in C:

  • Strides Are Scans

    by Vanessa McHale | Haskell

    For an array with dimensions \(n_1,n_2,\ldots n_r\) stored in column-major order, an element with indices \(a_1,a_2,\ldots a_n\) is located at offset

  • 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.