Skip to content

Commit

Permalink
Simplify default functions in Interpreter<f64>
Browse files Browse the repository at this point in the history
  • Loading branch information
fivemoreminix committed Aug 30, 2021
1 parent cdb12c9 commit 165819e
Showing 1 changed file with 13 additions and 15 deletions.
28 changes: 13 additions & 15 deletions src/interpreter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,30 +131,28 @@ impl Default for Interpreter<f64> {
vars.insert(String::from("tau"), Variant::Num(std::f64::consts::TAU));
vars.insert(
String::from("abs"),
Variant::Function(|id, args| match ensure_arg_count(1, 1, args.len(), id) {
Ok(()) => Ok(args[0].abs()),
Err(e) => Err(e),
Variant::Function(|id, args| {
ensure_arg_count(1, 1, args.len(), id)?;
Ok(args[0].abs())
}),
);
vars.insert(
String::from("sqrt"),
Variant::Function(|id, args| match ensure_arg_count(1, 1, args.len(), id) {
Ok(()) => Ok(args[0].sqrt()),
Err(e) => Err(e),
Variant::Function(|id, args| {
ensure_arg_count(1, 1, args.len(), id)?;
Ok(args[0].sqrt())
}),
);
vars.insert(
String::from("factorial"),
Variant::Function(|id, args| match ensure_arg_count(1, 1, args.len(), id) {
Ok(()) => {
let n = args[0];
if n <= 1.0 {
Ok(1.0)
} else {
Ok((1..=n as u64).product::<u64>() as f64)
}
Variant::Function(|id, args| {
ensure_arg_count(1, 1, args.len(), id)?;
let n = args[0];
if n <= 1.0 {
Ok(1.0)
} else {
Ok((1..=n as u64).product::<u64>() as f64)
}
Err(e) => Err(e),
}),
);
Interpreter { vars }
Expand Down

0 comments on commit 165819e

Please sign in to comment.