uuid-1.3.11: For creating, comparing, parsing and printing Universally Unique Identifiers

Copyright | (c) 2008,2012 Antoine Latter
License | BSD-style
Maintainer | aslatter@gmail.com
Stability | experimental
Portability | portable
Safe Haskell | None
Language | Haskell98

Data.UUID

Description

This library is useful for comparing, parsing and printing Universally Unique Identifiers. See http://en.wikipedia.org/wiki/UUID for the general idea. See http://tools.ietf.org/html/rfc4122 for the specification.

- Random UUIDs may be generated using `nextRandom` or your favorite instance of `Random`.
- We have an implementation of generating a UUID from the hardware MAC address and current system time in Data.UUID.V1.
- For name-based generation of UUIDs using SHA-1 hashing see Data.UUID.V5.

Synopsis

- data UUID :: *
- toString :: UUID -> String
- fromString :: String -> Maybe UUID
- toText :: UUID -> Text
- fromText :: Text -> Maybe UUID
- toASCIIBytes :: UUID -> ByteString
- fromASCIIBytes :: ByteString -> Maybe UUID
- toLazyASCIIBytes :: UUID -> ByteString
- fromLazyASCIIBytes :: ByteString -> Maybe UUID
- toByteString :: UUID -> ByteString
- fromByteString :: ByteString -> Maybe UUID
- toWords :: UUID -> (Word32, Word32, Word32, Word32)
- fromWords :: Word32 -> Word32 -> Word32 -> Word32 -> UUID
- null :: UUID -> Bool
- nil :: UUID

# Documentation

data UUID :: *

The UUID type. A `Random` instance is provided which produces version 4 UUIDs as specified in RFC 4122. The `Storable` and `Binary` instances are compatible with RFC 4122, storing the fields in network order as 16 bytes.

Instances

Eq UUID |
Data UUID |
Ord UUID |
Read UUID |
Show UUID |
Storable UUID |
Binary UUID |
NFData UUID |
Hashable UUID |
Random UUID |

toString :: UUID -> String

Convert a UUID into a hypenated string using lower-case letters. Example:

     toString <$> fromString "550e8400-e29b-41d4-a716-446655440000"

fromString :: String -> Maybe UUID

If the passed in `String` can be parsed as a `UUID`, it will be. The hyphens may not be omitted. Example:

     fromString "c2cc10e1-57d6-4b6f-9899-38d972112d8c"

Hex digits may be upper or lower-case.

toText :: UUID -> Text

Convert a UUID into a hyphentated string using lower-case letters.

fromText :: Text -> Maybe UUID

If the passed in `Text` can be parsed as an ASCII representation of a `UUID`, it will be. The hyphens may not be omitted.

toASCIIBytes :: UUID -> ByteString

Convert a UUID into a hyphentated string using lower-case letters, packed as ASCII bytes into `ByteString`.

This should be equivalent to `toString` with `pack`.

fromASCIIBytes :: ByteString -> Maybe UUID

If the passed in `ByteString` can be parsed as an ASCII representation of a `UUID`, it will be. The hyphens may not be omitted.

This should be equivalent to `fromString` with `unpack`.

toLazyASCIIBytes :: UUID -> ByteString

Similar to `toASCIIBytes` except we produce a lazy `ByteString`.

fromLazyASCIIBytes :: ByteString -> Maybe UUID

Similar to `fromASCIIBytes` except parses from a lazy `ByteString`.

toByteString :: UUID -> ByteString

Encode a UUID into a `ByteString` in network order.

fromByteString :: ByteString -> Maybe UUID

Extract a UUID from a `ByteString` in network byte order. The argument must be 16 bytes long, otherwise `Nothing` is returned.

toWords :: UUID -> (Word32, Word32, Word32, Word32)

Covert a `UUID` into a sequence of `Word32` values. Useful for when you need to serialize a UUID and neither `Storable` nor `Binary` are appropriate. Introduced in version 1.2.2.

fromWords :: Word32 -> Word32 -> Word32 -> Word32 -> UUID

Create a `UUID` from a sequence of `Word32`. The opposite of `toWords`. Useful when you need a total function for constructing `UUID` values. Introduced in version 1.2.2.

null :: UUID -> Bool

Returns true if the passed-in UUID is the `nil` UUID.

nil :: UUID

The nil UUID, as defined in RFC 4122. It is a UUID of all zeros. ``null` u` iff ``u` == `nil``.