Thu Jun 28 12:26:10 EDT 2018

Haskell && top-down design

I find myself using more of a top-down approach when doing
type-directed work.  Write down the specification as types, then
refine those into possible "lemmas".

What often happens when descending into the implementation is that top
level APIs get changed to some isomorphic representation that is
easier to use.  Incorrect assumptions get corrected: dependencies get
added or removed.

I really like this way of working.