implement custom-set for haskell