published in Proceedings of the first ACM SIGPLAN international conference on Functional programming Journal