From dbc0ab93141784dc07a7e193024fc5716dd34214 Mon Sep 17 00:00:00 2001 From: Akshay Date: Wed, 31 Mar 2021 16:51:41 +0530 Subject: handle quoted objects better; add cond form --- src/lisp/expr.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/lisp/expr.rs') diff --git a/src/lisp/expr.rs b/src/lisp/expr.rs index 1f3e0fb..31476c9 100644 --- a/src/lisp/expr.rs +++ b/src/lisp/expr.rs @@ -3,7 +3,7 @@ use std::{cmp::PartialEq, convert::TryFrom, fmt}; use crate::app::AppState; use crate::lisp::{ error::{EvalError, LispError}, - eval::{lookup, Evaluator}, + eval::lookup, number::LispNumber, EnvList, }; @@ -18,7 +18,7 @@ pub enum Arity { } impl Arity { - pub fn is_valid(self, args: &[T]) -> bool { + pub fn check(self, args: &[T]) -> bool { match self { Arity::Exact(a) => args.len() == a, Arity::Atleast(a) => args.len() >= a, @@ -41,7 +41,7 @@ pub struct PrimitiveFunc { impl PrimitiveFunc { pub fn call(&self, args: &[LispExpr], app: &mut AppState) -> Result { - if !self.arity.is_valid(args) { + if !self.arity.check(args) { return Err(EvalError::ArgumentCount(self.arity).into()); } (self.closure)(args, app) @@ -226,7 +226,7 @@ impl fmt::Display for LispExpr { } LispExpr::Comma(val, depth) => write!(f, "{}{}", ",".repeat(*depth as usize), val)?, LispExpr::CommaAt(val, depth) => write!(f, "{}@{}", ",".repeat(*depth as usize), val)?, - LispExpr::Quote(val, depth) => write!(f, "{}{}", "'".repeat(*depth as usize), val)?, + LispExpr::Quote(val, depth) => write!(f, "{}{}", "'".repeat(*depth as usize - 1), val)?, }; Ok(()) } -- cgit v1.2.3