weld 0.4.0

Weld is a language and runtime for improving the performance of data-intensive applications.
macro map(data, func) = (
  result(for(data, appender, |b, i, x| merge(b, func(x))))
);

macro filter(data, func) = (
  result(for(data, appender, |b, i, x| if(func(x), merge(b, x), b)))
);

macro flatten(data) = (
    result(for(
        data,
        appender[?],
        |b, i, x| for(x, b, |b2, i2, x2| merge(b2, x2))
    ))
);

macro sum(data) = (
  result(for(
    data,
    merger[?,+],
    |b,i,x| merge(b, x)
  ))
);

# Default comparator.
macro compare(e1, e2) = (
  if(e1 > e2, 1, if(e1 < e2, -1, 0))
);