[Haskell-cafe] Unwrapping newtypes
Evan Laforge
qdunkan at gmail.com
Wed Sep 8 13:51:21 EDT 2010
Here's a different approach:
If you just want to make the typechecker distinguish between some
values but still have some functions that don't care what "subtype"
they are, you can use phantom types:
data Obj x = Obj X Y Z
data BlogObj
type Blog = Obj BlogObj
data CommentObj
type Comment = Obj CommentObj
data UserObj
type User = Obj UserObj
Now you can write a function that takes a Blog, and it will refuse
other kinds of 'Obj'. But you can still write a function that takes
'Obj x' and it will accept any kind of Obj. So you don't need to do
any unwrapping if you leave the functions that matter polymorphic.
More information about the Haskell-Cafe
mailing list