knowledge into the type system. • Write key function types. • Come up with combinators and higher order functions. • Observe what properties your types fulﬁl, and see if you can beneﬁt from standard computational abstractions.
into types. (Not in Haskell anyway.) • Most of us don’t like the “driven” or “ﬁrst” part. We like tests for our software. • We believe types and algebras serve as much better design language, and test-ﬁrst methodology doesn’t seem to reconcile well with that.