For future reference, generating five closures here is not very thrifty. They're inlined under -optimise, but there's no reason to depend on that. One big triple quoted string.