c5eaba88b7
Push the envelope as far as you can! ...and then give up and use cast(), because we don't have applicative functors or higher kinded types