A product-of-sums generics library


A library to convert non-recursive Haskell-98 datatypes to a Product-of-Sums representation - and back. This makes it possible to compactly store arrays of (nested) sum types in a struct-of-arrays representation, which is used in array-based languages like Accelerate.


  • The Stack package manager (Tested with stack 2.7.3)
  • stylish-haskell and hlint (for linting only)

Tests and lints

stylish-haskell -r src examples test
hlint src examples test
stack test


stack build
# To build the docs
stack haddock posable


In the examples folder you will find examples that describe how to use this library.