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
Value
can't be aField
, so it can't have a key component.