Implement display and string support resolves #10

This commit is contained in:
2021-05-30 22:49:31 -04:00
parent a7caac30f9
commit 2e67e1220c
5 changed files with 65 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
use crate::parser::Datum;
use crate::parser::Datum::*;
use std::io;
use std::io::prelude::*;
use std::mem;
pub fn add(mut args: Vec<Datum>) -> Datum {
@@ -84,3 +86,17 @@ pub fn lt(args: Vec<Datum>) -> Datum {
Boolean(true)
}
}
pub fn display(args: Vec<Datum>) -> Datum {
for i in 1..args.len() {
match &args[i] {
Boolean(b) => print!("{}", b),
Number(n) => print!("{}", n),
String(s) => print!("{}", s),
List(v) => print!("{:?}", v),
_ => panic!("DISPLAY -- cannot-print {:?}", args[1]),
};
}
io::stdout().flush().ok().expect("Could not flush stdout");
Unspecified
}