diff options
| author | Joel Martin <github@martintribe.org> | 2014-04-16 23:57:50 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-04-16 23:57:50 -0500 |
| commit | 8cb5cda46cf3aef847ae3926dc53a5e5f87fe261 (patch) | |
| tree | 13e5b2878f19ee24272ead8a92a9cb84b33ad0e5 /ruby/core.rb | |
| parent | a05f7822b10ed4cdd61ed8384299a003baf1c1c6 (diff) | |
| download | mal-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.rb | 14 |
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}, |
