From b0bd6e899d49c20d2d2a4e2dc9fafd4f5fd282ee Mon Sep 17 00:00:00 2001 From: vonhyou Date: Thu, 15 Apr 2021 01:49:26 +0800 Subject: [PATCH] rewrite env --- prol.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/prol.rb b/prol.rb index c33be1f..9da1aa5 100644 --- a/prol.rb +++ b/prol.rb @@ -51,10 +51,17 @@ module Lisp def self.make_global @global_env ||= begin ops = %i[== != < <= > >= + - * / % & | ^ ~] - ops.inject({}) do |scope, op| - scope.merge op => ->(*args) { args.inject(&op) } + ops.inject({}) do |sp, op| + sp.merge op => ->(*args) { args.inject(&op) } end end + + @global_env.merge! quote: ->(*args) { args.to_a } + @global_env.merge! cons: ->(*args) { args.to_a } + @global_env.merge! car: ->(arr) { arr[0] } + @global_env.merge! cdr: ->(arr) { arr[1..-1] } + @global_env.merge! print: ->(arg) { p arg } + @global_env end ##### Lisp Eval