haskell99 21-28