aboutsummaryrefslogtreecommitdiff
path: root/ruby/core.rb
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-04-10 22:24:58 -0500
committerJoel Martin <github@martintribe.org>2014-04-10 22:24:58 -0500
commit8bf53bec72d27d7d895b39812ffae1e990425158 (patch)
treea658f2900b9ceff44522780b3d5c28afb1abf0e2 /ruby/core.rb
parentb5f469de182a3e95b2d968ddccf2e2f9b77a3dc2 (diff)
downloadmal-8bf53bec72d27d7d895b39812ffae1e990425158.tar.gz
mal-8bf53bec72d27d7d895b39812ffae1e990425158.zip
Ruby: step4_if_fn_do with core functions.
Diffstat (limited to 'ruby/core.rb')
-rw-r--r--ruby/core.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/ruby/core.rb b/ruby/core.rb
new file mode 100644
index 0000000..268ebad
--- /dev/null
+++ b/ruby/core.rb
@@ -0,0 +1,20 @@
+$core_ns = {
+ :"=" => lambda {|a,b| a == b},
+ :"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(" "))},
+ :< => lambda {|a,b| a < b},
+ :<= => lambda {|a,b| a <= b},
+ :> => lambda {|a,b| a > b},
+ :>= => lambda {|a,b| a >= b},
+ :+ => lambda {|a,b| a + b},
+ :- => lambda {|a,b| a - b},
+ :* => lambda {|a,b| a * b},
+ :/ => lambda {|a,b| a / b},
+ :list => lambda {|*a| List.new a},
+ :list? => lambda {|*a| a[0].is_a? List},
+ :empty? => lambda {|a| a.size == 0},
+ :count => lambda {|a| a.size},
+}
+