haskell Provides newtype wrappers for phantom types to avoid unsafely passing dummy arguments ekmett/tagged