summaryrefslogtreecommitdiff
path: root/rust/src/io.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src/io.rs')
-rw-r--r--rust/src/io.rs73
1 files changed, 0 insertions, 73 deletions
diff --git a/rust/src/io.rs b/rust/src/io.rs
deleted file mode 100644
index 8c628ba..0000000
--- a/rust/src/io.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-use std::{
- fs::read_to_string,
- io::{BufRead, BufReader, Read, Write},
-};
-
-use crate::{
- ast::Value,
- lambda::{eval_all, eval_whnf, Environment},
- parser::parse,
-};
-
-pub fn eval_file(file_name: &str) -> String {
- let content = read_to_string(file_name).unwrap();
- let values = parse(&content.to_string());
- eval_all(&values)
- .iter()
- .map(|v| v.to_string())
- .collect::<Vec<String>>()
- .join(" ")
-}
-
-pub fn batch_eval<I: Read, O: Write>(inp: &mut I, outp: &mut O) {
- let mut env = Environment::new();
- let mut reader = BufReader::new(inp);
- loop {
- let mut input = String::new();
- outp.flush().unwrap();
- match reader.read_line(&mut input) {
- Ok(0) => break,
- Ok(_) => (),
- Err(e) => {
- writeln!(outp, "{}", e).unwrap();
- break;
- }
- }
- let values = parse(&input);
- let results = values
- .iter()
- .map(|v| eval_whnf(v, &mut env))
- .collect::<Vec<Value>>();
- for result in results {
- writeln!(outp, "{}", result).unwrap();
- outp.flush().unwrap();
- }
- }
-}
-
-pub fn repl<I: Read, O: Write>(inp: &mut I, outp: &mut O) {
- let mut env = Environment::new();
- let mut reader = BufReader::new(inp);
- loop {
- let mut input = String::new();
- write!(outp, "> ").unwrap();
- outp.flush().unwrap();
- match reader.read_line(&mut input) {
- Ok(0) => break,
- Ok(_) => (),
- Err(e) => {
- writeln!(outp, "{}", e).unwrap();
- break;
- }
- }
- let values = parse(&input);
- let results = values
- .iter()
- .map(|v| eval_whnf(v, &mut env))
- .collect::<Vec<Value>>();
- for result in results {
- writeln!(outp, "{}", result).unwrap();
- outp.flush().unwrap();
- }
- }
-}