val 0.4.2

An arbitrary precision calculator language
Documentation
use {
  ariadne::{Color, IndexType, Label, Report, ReportKind},
  ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp},
  chumsky::prelude::*,
  context::Context,
  decimal::Decimal,
  frame::Frame,
  rug::{
    Complete, Float, Integer, Rational,
    float::{Constant, Round},
    integer::MiniInteger,
    ops::{Pow, PowAssignRound},
  },
  std::{
    cell::RefCell,
    cmp::Ordering,
    collections::HashMap,
    fmt::{self, Display, Formatter},
    iter::once,
    num::NonZeroUsize,
    ops::Range,
    rc::Rc,
    str::FromStr,
  },
  symbol::Symbol,
};

pub use crate::{
  builtin::Builtin, builtin_arity::BuiltinArity,
  builtin_function_payload::BuiltinFunctionPayload, completion::Completion,
  config::Config, environment::Environment, error::Error,
  evaluation::Evaluation, evaluator::Evaluator, function::Function,
  number::Number, parser::parse, rounding_mode::RoundingMode, value::Value,
};

pub type Span = SimpleSpan<usize>;
pub type Spanned<T> = (T, Span);

type Result<T = (), E = anyhow::Error> = std::result::Result<T, E>;

pub mod ast;
mod builtin;
mod builtin_arity;
mod builtin_function_payload;
mod completion;
mod config;
mod context;
mod decimal;
mod environment;
mod error;
mod evaluation;
mod evaluator;
mod frame;
mod function;
mod number;
mod parser;
mod rounding_mode;
mod symbol;
mod value;