Haskell play share functions from Principles of Programming Languages