Get an efficient, optimal, type-safe diff and patch function for your datatypes of choice by defining a simple GADT and some class instances.
Extracted from Eelco Lempsink's Thesis (http://eelco.lempsink.nl/thesis.pdf).
- Uses Data.Type.Equality.
- Added a missing case in 'patchL' (thanks to Gabor Greif).
- Initial release