aboutsummaryrefslogtreecommitdiff
path: root/ruby/core.rb
diff options
context:
space:
mode:
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},
+}
+