[Haskell-beginners] Bool newtype

Michael Alan Dorman mdorman at jaunder.io
Sun Aug 7 12:35:49 UTC 2016

Imants Cekusins <imantc at gmail.com> writes:

> for a Bool-like newtype:
> newtype B = B Bool
> , is there an easy way to use this newtype B in place of Bool?
> e.g.
> let b1 = B True
> in if b1 then 1 else 0
> ?


You can create a function that converts a B to a Bool:

  toBool :: B -> Bool
  toBool B b = b

And then use the result of applying that function to your variable:

  let b1 = B True
  in if toBool b1
     then 1
     else 0

To do anything like this automatically would seem to me to defeat the
purpose of having distinct types, which is to clearly articulate what
values are appropriate in particular contexts.


More information about the Beginners mailing list