Beautiful differentiation

november 2017 by mike

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.

haskell
math
programming
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

february 2017 by mike

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.

haskell
scheme
lisp
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

december 2016 by mike

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.

haskell
functional
programming
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.

december 2016 by mike

Copy this bookmark: