ucg/std/functional.ucg
2019-01-30 20:38:17 -06:00

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,
};