aboutsummaryrefslogtreecommitdiff
path: root/perl/step0.5_repl.pl
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-12-18 20:33:49 -0600
committerJoel Martin <github@martintribe.org>2015-01-09 16:16:50 -0600
commitb8ee29b22fbaa7a01f2754b4d6dd9af52e02017c (patch)
treef4d977ed220e9a3f665cfbf4f68770a81e4c2095 /perl/step0.5_repl.pl
parentaaba249304b184e12e2445ab22d66df1f39a51a5 (diff)
downloadmal-b8ee29b22fbaa7a01f2754b4d6dd9af52e02017c.tar.gz
mal-b8ee29b22fbaa7a01f2754b4d6dd9af52e02017c.zip
All: add keywords.
Also, fix nth and count to match cloure.
Diffstat (limited to 'perl/step0.5_repl.pl')
-rw-r--r--perl/step0.5_repl.pl33
1 files changed, 33 insertions, 0 deletions
diff --git a/perl/step0.5_repl.pl b/perl/step0.5_repl.pl
new file mode 100644
index 0000000..d8a9d9f
--- /dev/null
+++ b/perl/step0.5_repl.pl
@@ -0,0 +1,33 @@
+use strict;
+use warnings FATAL => qw(all);
+use readline qw(readline);
+
+# read
+sub READ {
+ my $str = shift;
+ return $str;
+}
+
+# eval
+sub EVAL {
+ my($ast, $env) = @_;
+ return eval($ast);
+}
+
+# print
+sub PRINT {
+ my $exp = shift;
+ return $exp;
+}
+
+# repl
+sub REP {
+ my $str = shift;
+ return PRINT(EVAL(READ($str), {}));
+}
+
+while (1) {
+ my $line = readline("user> ");
+ if (! defined $line) { last; }
+ print(REP($line), "\n");
+}