module Data.ISBN.Types where import Data.Text -- | Data type for representing ISBN values. Values of this type should be -- created safely using 'Data.ISBN.validateISBN', which will produce 'ISBN10' -- or 'ISBN13' values after validating the input. -- -- The 'Data.ISBN.validateISBN10' and 'Data.ISBN.validateISBN13' functions can -- also be used to only attempt to create ISBNs of a specific type. -- -- To create @ISBN@ values without validation, use the 'Data.ISBN.unsafeToISBN10' -- and 'Data.ISBN.unsafeToISBN13' functions to coerce 'Data.Text.Text' values -- into 'ISBN' values. data ISBN = ISBN10 Text -- ^ An ISBN-10 value. Consists of 9 digits followed by a base-11 check digit (@0-9@ or @\'X\'@). | ISBN13 Text -- ^ An ISBN-13 value. Consists of 12 digits followed by a base-10 check digit (@0-9@). deriving (Show, Eq)