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 Item
always evaluates to the
same Item
.
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.
Returns the heterogeneous sort order of this Item
. Used to impose a
total order on the set of all items. When comparing two items of
different types, the items order according to their typeOrder}
.
Always returns Absent because a
Value
can't be aField
, so it can't have a key component.