a restrictive haskell example