Returns the number of members contained in this Value, if this Value
is a Record; otherwise returns 0 if this Value is not a Record.
Converts this Value into a boolean value, if possible; otherwise
returns undefined if this Value can't be converted into a boolean
value.
Converts this Value into a boolean value, if possible; otherwise
returns orElse if this Value can't be converted into a boolean value.
Returns the sole member of this Value, if this Value is a Record
with exactly one member, and its member is a Value; returns Extant
if this Value is an empty Record; otherwise returns this if this
Value is a Record with more than one member, or if this Value is a
not a Record.
Used to convert a unary Record into its member Value. Facilitates
writing code that treats a unary Record equivalently to a bare Value.
Returns the value of the first member of this Value, if this Value is
a Record, and its first member is an Attr whose key string is
equal to tag; otherwise returns Absent if this Value is not a
Record, or if this Value is a Record whose first member is not an
Attr, or if this Value is a Record whose first member is an Attr
whose key does not equal the tag.
Used to conditionally get the value of the head Attr of a structure, if
and only if the key string of the head Attr is equal to the tag. Can
be used to check if a structure might conform to a nominal type named
tag, while simultaneously getting the value of the tag attribute.
Returns the unflattened header of
this Value, if this Value is a Record, and its first member is an
Attr whose key string is equal to tag; otherwise returns
undefined.
The headers of the tag attribute of a structure are like the
attributes of an XML element tag; through unlike an XML element, tag
attribute headers are not limited to string keys and values.
Returns true if this Value is not Absent.
Converts this Value into a number value, if possible; otherwise returns
undefined if this Value can't be converted into a number value.
Converts this Value into a number value, if possible; otherwise returns
orElse if this Value can't be converted into a number value.
Converts this Value into a string value, if possible; otherwise returns
undefined if this Value can't be converted into a string value.
Converts this Value into a string value, if possible; otherwise returns
orElse if this Value can't be converted into a string value.
Returns the key string of the first member of this Value, if this
Value is a Record, and its first member is an Attr; otherwise
returns undefined if this Value is not a Record, or if this Value
is a Record whose first member is not an Attr.
Used to concisely get the name of the discriminating attribute of a
structure. The tag can be used to discern the nominal type of a
polymorphic structure, similar to an XML element tag.
Returns the flattened members of this Value after
all attributes have been removed, if this Value is a Record;
otherwise returns this if this Value is not a Record.
Used to concisely get the scalar value of an attributed structure. An
attributed structure is a Record with one or more attributes that modify
one or more other members.
Always returns this because every Value is its own value component.
Always returns Absent because a
Valuecan't be aField, so it can't have a key component.