Beautiful differentiation
Automatic differentiation (AD) is a precise, efficient, and convenient method for computing derivatives of functions. Its forward-mode implementation can be quite simple even when extended to compute all of the higher-order derivatives as well. The higher-dimensional case has also been tackled, though with extra complexity. This paper develops an implementation of higher-dimensional, higher-order, forward-mode AD in the extremely general and elegant setting of calculus on manifolds and derives that implementation from a simple and precise specification.

In order to motivate and discover the implementation, the paper poses the question “What does AD mean, independently of implementation?” An answer arises in the form of naturality of sampling a function and its derivative. Automatic differentiation flows out of this naturality condition, together with the chain rule. Graduating from first-order to higher-order AD corresponds to sampling all derivatives instead of just one. Next, the setting is expanded to arbitrary vector spaces, in which derivative values are linear maps. The specification of AD adapts to this elegant and very general setting, which even simplifies the development.
november 2017 by mike
Write Yourself a Scheme in 48 Hours - Wikibooks, open books for an open world
You'll start off using and parsing the command-line, then progress to writing a fully-functional Scheme interpreter that implements a decent subset of R5RS Scheme. Along the way, you'll learn Haskell's I/O, mutable state, dynamic typing, error handling, and parsing features. By the time you finish, you should become fairly fluent in Haskell and Scheme.

This tutorial targets two main audiences:

People who already know Lisp or Scheme, and want to learn Haskell
People who don't know any programming language, but have a strong quantitative background, and are familiar with computers
The second group will likely find this challenging, as this tutorial glosses over several concepts in Scheme and general programming in order to stay focused on Haskell. A good textbook such as Structure and Interpretation of Computer Programs or The Little Schemer should be very helpful.
february 2017 by mike
Why Do Monads Matter? | Sententia cdsmithus
These are the kinds of questions I begin with. My goal is to demonstrate for you, with details and examples:

Where category-based intuition and ideas, and monads in particular, come from in computer programming.
Why the future of programming does lie in these ideas, and their omission in today’s mainstream languages has cost us dearly.
What the state of the art looks like in applying category-based ideas to problems in computer programming.