The UUID library

UUIDs are “Universally Unique IDentifiers”. They are immutable objects representing 128 bits of data.

In addition to constructing UUIDs from raw bytes or strings, it also provides for creating version 3, 4 or 5 UUIDs as defined in RFC 4122.

UUID creation functions:

The most common way of creating a UUID will likely be make-uuid4 to construct a random UUID.

The UUID module

<uuid> Class
Superclasses

<object>

Init-Keywords
  • data (required) – An instance of limited(<byte-vector>, size:, 16).

Discussion

This class holds the data for a UUID. UUIDs are typically constructed with the functions make-uuid3, make-uuid4, or make-uuid5.

UUIDs can also be created from a string using as(<uuid>, <string>).

See also

$nil-uuid Constant
Type

<uuid>

Value

make(<uuid>, data: make(<byte-vector>, size: 16, fill: 0))

Discussion

This is a UUID where all of the bits are 0.

Creation

make-uuid3 Generic function
Signature

make-uuid3 (namespace name) => (uuid)

Parameters
  • namespace – An instance of <uuid>.

  • name – An instance of <string>.

Values
  • uuid – An instance of <uuid>.

Discussion

Construct a version 3 UUID that is the MD5 hash of a namespace and name. Predefined namespaces are available as $namespace-dns, $namespace-url, $namespace-iso-oid, and $namespace-x500.

Example
let uuid = make-uuid3($namespace-url,
                      "http://github.com/dylan-foundry/uuid");
See also

make-uuid4 Generic function
Signature

make-uuid4 () => (uuid)

Values
  • uuid – An instance of <uuid>.

Discussion

Construct a version 4 UUID that uses random data.

Example
let uuid = make-uuid4();
See also

make-uuid5 Generic function
Signature

make-uuid5 (namespace name) => (uuid)

Parameters
  • namespace – An instance of <uuid>.

  • name – An instance of <string>.

Values
  • uuid – An instance of <uuid>.

Discussion

Construct a version 5 UUID that is the SHA1 hash of a namespace and name. Predefined namespaces are available as $namespace-dns, $namespace-url, $namespace-iso-oid, and $namespace-x500.

Example
let uuid = make-uuid5($namespace-dns, "opendylan.org");
See also

Conversion

as(<uuid>, <string>) Method
Signature

as(<uuid>, string) => uuid

Parameters
  • type – This must be <uuid>.

  • string – An instance of <string>.

Values
  • uuid – An instance of <uuid>.

Discussion

Convert a string into a UUID. The string must only contain hexadecimal digits and, excluding dashes, must only 32 characters long.

Example
let uuid = as(<uuid>, "4699DE5F-1F40-41B8-AB8D-55CCA1A6C9E9");
as(<string>, <uuid>) Method
Signature

as(<string>, uuid) => string

Parameters
  • type – This must be <string>.

  • uuid – An instance of <uuid>.

Values
  • string – An instance of <string>.

Discussion

Convert a UUID into a human readable string.

Example
? as(<string>, uuid)
=> "4699DE5F-1F40-41B8-AB8D-55CCA1A6C9E9"

Miscellaneous

$namespace-dns Constant
Type

<uuid>

Value

as(<uuid>, "6ba7b810-9dad-11d1-80b4-00c04fd430c8")

Discussion

A predefined namespace UUID that can be used with make-uuid3 or make-uuid5. This namespace UUID is as it is specified in RFC 4122.

When used to create a UUID, the associated name should be a fully qualified domain name.

See also

$namespace-iso-oid Constant
Type

<uuid>

Value

as(<uuid>, "6ba7b812-9dad-11d1-80b4-00c04fd430c8")

Discussion

A predefined namespace UUID that can be used with make-uuid3 or make-uuid5. This namespace UUID is as it is specified in RFC 4122.

When used to create a UUID, the associated name should be an ISO OID.

See also

$namespace-url Constant
Type

<uuid>

Value

as(<uuid>, "6ba7b811-9dad-11d1-80b4-00c04fd430c8")

Discussion

A predefined namespace UUID that can be used with make-uuid3 or make-uuid5. This namespace UUID is as it is specified in RFC 4122.

When used to create a UUID, the associated name should be a URL.

See also

$namespace-x500 Constant
Type

<uuid>

Value

as(<uuid>, "6ba7b814-9dad-11d1-80b4-00c04fd430c8")

Discussion

A predefined namespace UUID that can be used with make-uuid3 or make-uuid5. This namespace UUID is as it is specified in RFC 4122.

When used to create a UUID, the associated name should be an X.500 DN in DER or a text output format.

See also

rfc4122-variant? Generic function
Signature

rfc4122-variant? (uuid) => (res)

Parameters
  • uuid – An instance of <uuid>.

Values
  • res – An instance of <boolean>.

Discussion

Identify whether or not the given uuid is one of the variants defined in RFC 4122.

Example
? let uuid = make-uuid4();
? rfc4122-variant?(uuid)
=> #t
rfc4122-version Generic function
Signature

rfc4122-version (uuid) => (res)

Parameters
  • uuid – An instance of <uuid>.

Values
  • res – An instance of <integer>.

Discussion

If the given uuid is one of the variants defined in RFC 4122, this will return which version it is.

If the uuid is not a variant from RFC 4122, the results of this function are undefined.

Example
? let uuid = make-uuid4();
? rfc4122-version(uuid)
=> 4
uuid-data Generic function
Signature

uuid-data (uuid) => (data)

Parameters
  • uuid – An instance of <uuid>.

Values
  • data – An instance of limited(<byte-vector>, size:, 16).

Discussion

Return the byte vector containing the immutable data for the uuid.