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
.
Always returns false
because Absent
behaves like a falsey value.
Always returns false
because Absent
behaves like a falsey 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.
Always returns false
because Absent
represents an undefined value.
Always returns false
because Absent
is not a distinct value.
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 an empty Record
because Absent
is not a distinct value.
Always returns Absent because a
Value
can't be aField
, so it can't have a key component.