From Haskell to Hardware via CCCs
TeX Makefile
Latest commit 242622f Jun 22, 2016 @conal typo fix
Failed to load latest commit information.
dots CRC dots and abstract Apr 7, 2015
.gitignore many changes; .dot files Apr 7, 2015 2015 (BayHac) Nov 2, 2015
haskell-to-hardware.lhs typo fix Jun 22, 2016
macros.tex more examples Apr 6, 2015
makefile CRC Apr 7, 2015
mine.fmt CRC Apr 7, 2015 Initial commit Aug 8, 2014 misc Aug 13, 2014

Talk: From Haskell to Hardware via CCCs

This talk describes my project at Tabula Inc for compiling Haskell to hardware.


For the last several years, speed improvements in computing come mainly from increasing parallelism. Imperative programming, however, makes parallelization very difficult due to the many possible dependencies implied by effects. For decades, pure functional programming has held the promise of parallel execution while retaining the very simple semantics that enables practical, rigorous reasoning. This talk describes a prototype compiler from Haskell (not a library) to low-level hardware descriptions for massively parallel execution on reprogrammable logic devices. The compiler works by monomorphizing, miscellaneous other transformations, and conversion to the vocabulary of cartesian closed categories (CCCs), as captured in a small collection of Haskell type classes. One instance of those classes provides an interpretation as parallel circuits. I will show many examples of simple Haskell programs and corresponding compiler-generated circuits.