mirror of
https://github.com/zaphar/ucg.git
synced 2025-07-22 18:19:54 -04:00
28 lines
698 B
Plaintext
28 lines
698 B
Plaintext
let maybe = module{
|
|
val = NULL,
|
|
} => {
|
|
let do = func (op) => select (mod.val != NULL), NULL, {
|
|
true = op(mod.val),
|
|
};
|
|
};
|
|
|
|
let if = module{
|
|
test = false,
|
|
} => {
|
|
let do = func (op, arg) => select mod.test, arg, {
|
|
true = op(arg),
|
|
};
|
|
};
|
|
|
|
let identity = func (arg) => arg;
|
|
|
|
let s = import "std/schema.ucg";
|
|
|
|
let map_list_reducer = func(acc, item) => acc{list = acc.list + [acc.op(item)]};
|
|
|
|
let map_str_reducer = func(acc, item) => acc{str = acc.str + acc.op(item)};
|
|
|
|
let map = func(op, coll) => select s.base_type_of(coll), NULL, {
|
|
list = reduce(map_list_reducer, {op=op, list=[]}, coll).list,
|
|
str = reduce(map_str_reducer, {op=op, str=""}, coll).str,
|
|
}; |