@mstksg mstksg tagged this May 29, 2018 · 32 commits to master since this tag

Assets 2
**NOTE** Major breaking changes to *Explicit* modules, and some re-shuffling of
typeclass constraints on various non-explicit functions that should only affect
polymorphic usage.

*   *Huge improvements in performance!*  Around 20-40% reduction in
    runtimes/overheads, with savings higher for large matrix situations or
    situations with expensive `add`.
*   However, this restructuring required *major* reshuffling of constraints on
    `Backprop`/`Num` for most functions.  These are potentially **breaking
    changes** for polymorphic code, but monomorphic code should remain
    unchanged.  However, code using the *Explicit* interfaces is most likely
    broken unfortunately.  Fixes just include adding or dropping `zeroFunc`s to
    the appropriate functions.
*   Added warnings to *Explicit* modules that the API is "semi-stable".
*   `overVar` and `%~~`, for modifying fields.  Essentially a wrapper over a
    `viewVar` and `setVar`.
*   Argument order in the `backpropWith` family of functions changed again;
    **breaking change** for those using any `backpropWith` function.  However,
    the new order is much more usable.
*   Changes to the argument order in the `backprop` family of functions in the
    *Explicit* interfaces now reverted back to previous order, from v0.2.0 and
    before.  Should be an "un-breaking" change, but will break code written in
    v0.2.3 style.
*   Bechmarks now include HKD access and a "hybrid" approach.  Documentation
    updated to reflect results.
*   Documentation updated to include a new "unital" law for `one`, namely `one
    = gradBP id`.
*   Fixity declarations for `^^?`, `^^?!`, and `<$>`.
*   Added `fmap . const` and `<$` to *Prelude* modules.
*   `Backprop` instances for `Expr` from *simple-reflect*
*   Added `zeroVecNum` and `oneVecNum` to *Numeric.Backprop.Class*, which is
    potentially more efficient than `zeroVec` and `oneVec` if the items are
    instances of `Num` and the vectors are larger.  Also added `NumVec` newtype
    wrapper giving `Backprop` instances to vectors using `zeroVecNum` and
    `oneVecNum` instead of `zeroVec` and `oneVec`.
*   `Build.hs` build script now also builds profiling results