aboutsummaryrefslogtreecommitdiff
path: root/ruby/core.rb
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-04-16 23:57:50 -0500
committerJoel Martin <github@martintribe.org>2014-04-16 23:57:50 -0500
commit8cb5cda46cf3aef847ae3926dc53a5e5f87fe261 (patch)
tree13e5b2878f19ee24272ead8a92a9cb84b33ad0e5 /ruby/core.rb
parenta05f7822b10ed4cdd61ed8384299a003baf1c1c6 (diff)
downloadmal-8cb5cda46cf3aef847ae3926dc53a5e5f87fe261.tar.gz
mal-8cb5cda46cf3aef847ae3926dc53a5e5f87fe261.zip
All: move some fns to core. Major cleanup.
- Don't import/require core until step4. - Define cond/or macros from step8
Diffstat (limited to 'ruby/core.rb')
-rw-r--r--ruby/core.rb14
1 files changed, 11 insertions, 3 deletions
diff --git a/ruby/core.rb b/ruby/core.rb
index 8823112..c7fc8c3 100644
--- a/ruby/core.rb
+++ b/ruby/core.rb
@@ -1,3 +1,7 @@
+require "readline"
+require "reader"
+require "printer"
+
$core_ns = {
:"=" => lambda {|a,b| a == b},
:throw => lambda {|a| raise MalException.new(a), "Mal Exception"},
@@ -6,10 +10,14 @@ $core_ns = {
:false? => lambda {|a| a == false},
:symbol? => lambda {|a| a.is_a? Symbol},
:symbol? => lambda {|a| a.is_a? Symbol},
+
:"pr-str" => lambda {|*a| a.map {|e| _pr_str(e, true)}.join(" ")},
- :"str" => lambda {|*a| a.map {|e| _pr_str(e, false)}.join("")},
- :"prn" => lambda {|*a| puts(a.map {|e| _pr_str(e, true)}.join(" "))},
- :"println" => lambda {|*a| puts(a.map {|e| _pr_str(e, false)}.join(" "))},
+ :str => lambda {|*a| a.map {|e| _pr_str(e, false)}.join("")},
+ :prn => lambda {|*a| puts(a.map {|e| _pr_str(e, true)}.join(" "))},
+ :println => lambda {|*a| puts(a.map {|e| _pr_str(e, false)}.join(" "))},
+ :readline => lambda {|a| Readline.readline(a,true)},
+ :"read-string" => lambda {|a| read_str(a)},
+ :slurp => lambda {|a| File.read(a)},
:< => lambda {|a,b| a < b},
:<= => lambda {|a,b| a <= b},
:> => lambda {|a,b| a > b},