Acceptance tests

"Acceptance tests are specific examples of a requirement in action." (Ken Pugh)…

Expressing intent

"Many good programming practices boil down to preparing for change or expressing intent. Novices emphasize the former, experts the latter." (John D. Cook)…

A structural approach to Free

Introduction This note presents Free from a sole structural standpoint. More specifically, we reduce the derivation of Free to the problem of designing a data type for trees without predetermined internal nodes. The reader should be familiar with recursive data types, type constructors, as well as the functor and monad…

Dependency Inversion Principle

A more language-oriented rewording of the Dependency Inversion Principle might read as follows: Only accept – as input, terms coming from your own language.…