val 0.4.0

An arbitrary precision calculator language
Documentation
fn map(l, f) {
  result = []

  for item in l {
    result = append(result, f(item))
  }

  return result
}

fn double(x) {
  return x * 2
}

fn even(x) {
  return x % 2 == 0
}

fn filter(l, f) {
  result = []

  for item in l {
    if (f(item)) {
      result = append(result, item)
    }
  }

  return result
}

fn reduce(l, f, initial) {
  result = initial

  for item in l {
    result = f(result, item)
  }

  return result
}

fn sum(a, b) {
  return a + b
}

fn max(a, b) {
  if (a > b) {
    return a
  } else {
    return b
  }
}

l = [1, 2, 3, 4, 5]

println(map(l, double))
println(filter(l, even))
println(reduce(l, sum, 0))
println(reduce(l, max, l[0]))