From 495f307ad1b4c467e7b8f67da13932a09a0f2479 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Wed, 20 Apr 2016 00:45:15 -0400 Subject: rust: flush out repr function --- minimal.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/minimal.rs b/minimal.rs index 01e64c4..57c8268 100644 --- a/minimal.rs +++ b/minimal.rs @@ -126,16 +126,18 @@ fn scheme_eval<'a>(ast: &SchemeExpr) -> Result, &'static str> { fn scheme_repr<'a>(ast: &SchemeExpr) -> Result { return match ast { &SchemeExpr::SchemeTrue => Ok("#t".to_string()), - &SchemeExpr::SchemeFalse => Ok("#t".to_string()), + &SchemeExpr::SchemeFalse => Ok("#f".to_string()), &SchemeExpr::SchemeNull => Ok("'()".to_string()), + &SchemeExpr::SchemeBuiltin(b)=> Ok(b.to_string()), + &SchemeExpr::SchemeStr(s)=> Ok(s.to_string()), + &SchemeExpr::SchemeNum(num) => Ok(format!("{}", num).to_string()), &SchemeExpr::SchemeList(ref list) => { let mut ret: String = list.iter().fold("(".to_string(), - |acc, ref el| acc + &scheme_repr(&el).unwrap()); - ret.push_str(")"); + |acc, ref el| acc + " " + &scheme_repr(&el).unwrap()); + ret.push_str(" )"); Ok(ret) }, - _ => Err("don't know how to repr something"), } } -- cgit v1.2.3