Programming with ornaments - Ko, H; Gibbons, J (Journal of Functional Programming, 2016)