numbat 1.23.0

A statically typed programming language for scientific computations with first class support for physical dimensions and units.
Documentation
use core::lists
use plot::common

struct BarChart<V: Dim> {
  value_label: String,
  values: List<V>,
  x_labels: List<String>,
}

fn _default_label(n: Scalar) -> String = "{n}"

fn bar_chart<V: Dim>(values: List<V>) -> BarChart<V> =
  BarChart {
    value_label: "",
    values: values,
    x_labels: map(_default_label, range(1, len(values))),
  }

fn xlabels<V: Dim>(ls: List<String>, chart: BarChart<V>) -> BarChart<V> =
  BarChart {
    value_label: chart.value_label,
    values: chart.values,
    x_labels: ls,
  }

fn value_label<V: Dim>(label: String, chart: BarChart<V>) -> BarChart<V> =
  BarChart {
    value_label: label,
    values: chart.values,
    x_labels: chart.x_labels,
  }