rb_map
This file defines additional operations on native rb_maps and rb_sets.
These structures are defined in core in init.meta.rb_map
. They are meta objects,
and are generally the most efficient dictionary structures to use for pure metaprogramming right now.
Declarations about rb_set
filter s P
returns the subset of elements of s
satisfying P
.
mfilter s P
returns the subset of elements of s
satisfying P
,
where the check P
is monadic.
union s t
returns an rb_set containing every element that appears in either s
or t
.
of_list_core empty l
turns a list of keys into an rb_set
.
It takes a user_provided rb_set
to use for the base case.
This can be used to pre-seed the set with additional elements,
and/or to use a custom comparison operator.
of_list l
transforms a list l : list key
into an rb_set
,
inferring an order on the type key
.
sdiff s1 s2
returns the set of elements that are in s1
but not in s2
.
It does so by folding over s2
. If s1
is significantly smaller than s2
,
it may be worth it to reverse the fold.
insert_list s l
inserts each element of l
into s
.
Declarations about rb_map
find_def default m k
returns the value corresponding to k
in m
, if it exists.
Otherwise it returns default
.
ifind m key
returns the value corresponding to key
in m
, if it exists.
Otherwise it returns the default value of value
.
zfind m key
returns the value corresponding to key
in m
, if it exists.
Otherwise it returns 0.
Returns the pointwise sum of m1
and m2
, treating nonexistent values as 0.
mfilter P s
filters s
by the monadic predicate P
on keys and values.
mmap f s
maps the monadic function f
over values in s
.
scale b m
multiplies every value in m
by b
.
Declarations about rb_lmap
Construct a rb_lmap from a list of key-data pairs
Returns the list of values of an rb_lmap
.
Declarations about name_set
union s t
returns an rb_set containing every element that appears in either s
or t
.