Comment on page
Newtype declarations
A special case of a new type declaration
newtype
can be used if the type has a single constructor with a single argument. For example, a type for representing an IP address could be declared this way:newtype IPAddress = IP String
The
newtype
is different from type
because it defines a completely new type rather than just a synonym for an existing type such as:type IPAddress = String
So any function that requires an
IPAddress
declared as a newtype
will only work with that type, and not simply a String
type.When compared to
data
, the newtype
has some efficiency benefits because it states that IPAddress
is simply a wrapper for the value of an existing type String
, whereas the data declaration:data IPAddress = IP String
states that
IPAddress
is a completely new data type.Last modified 1yr ago