cases become clearer • Component interactions become clearer; helps in achieving loose coupling • Harness always available Why do people TDD anyway? * Perceived ;) ** Half kidding
design (Peter Landin and Conal Eliott) • Types-first development (Tomas Petricek) • Algebra-driven development • Type-driven development (Don Stewart, during XMonad development)
Haskell) and search by wanted type. -- We start using the suggested -- function, and voila, everything -- type-checks! And has the correct -- semantics too. bar <=< foo
knowledge into the type system. • Write key function types. • Come up with combinators and higher order functions. • Observe what properties your types fulfil, and see if you can benefit from standard computational abstractions.
into types. (Not in Haskell anyway.) • Most of us don’t like the “driven” or “first” part. We like tests for our software. • We believe types and algebras serve as much better design language, and test-first methodology doesn’t seem to reconcile well with that.
Haskell. • Dependent types • Extensible algebraic effects • Row polymorphism • Better invariants, better program direction. • According to some of them, types could make tests redundant.