2019-02-18 20:15:20 -06:00
|
|
|
let ops = module {
|
|
|
|
str="",
|
|
|
|
} => {
|
|
|
|
let split_on = module{
|
|
|
|
on=" ",
|
|
|
|
str=mod.str,
|
2019-02-24 08:16:07 -06:00
|
|
|
} => (result) {
|
2019-02-18 20:15:20 -06:00
|
|
|
let splitter = func(acc, char) => acc{
|
|
|
|
out = select char == mod.on, acc.out, {
|
|
|
|
true = acc.out + [acc.buf],
|
|
|
|
},
|
|
|
|
buf = select char != mod.on, "", {
|
|
|
|
true = acc.buf + char,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
let accumulated = reduce(splitter, {out=[], buf=""}, mod.str);
|
|
|
|
|
|
|
|
let result = accumulated.out + [accumulated.buf];
|
|
|
|
};
|
|
|
|
|
|
|
|
let split_at = func(idx) => filter(
|
|
|
|
func(name, val) => name != "counter",
|
|
|
|
reduce(
|
|
|
|
func(acc, char) => acc{
|
|
|
|
counter = acc.counter + 1,
|
|
|
|
left = select acc.counter < idx, acc.left, {
|
|
|
|
true = acc.left + char,
|
|
|
|
},
|
|
|
|
right = select acc.counter >= idx, acc.right, {
|
|
|
|
true = acc.right + char,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{counter = 0, left = "", right = ""},
|
|
|
|
mod.str
|
|
|
|
)
|
|
|
|
);
|
|
|
|
};
|