From 3b9dbcccadfa01e9800c65d06cfd2cdb8b770a92 Mon Sep 17 00:00:00 2001 From: "Josep M. Bach" Date: Thu, 10 Mar 2011 17:54:08 +0100 Subject: [PATCH] Add #inspect --- lib/schemer/interpreter.rb | 4 ++++ spec/schemer/interpreter_spec.rb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/lib/schemer/interpreter.rb b/lib/schemer/interpreter.rb index f68f9aa..33154e0 100644 --- a/lib/schemer/interpreter.rb +++ b/lib/schemer/interpreter.rb @@ -28,6 +28,10 @@ def initialize(ast = nil) nil end) + env.add_binding(:inspect, lambda do |object| + object.inspect + end) + env.add_binding(:define, lambda do |parameters, body| if parameters.is_a?(AST::Identifier) # We are declaring a variable. We must eager-evaluate the value. diff --git a/spec/schemer/interpreter_spec.rb b/spec/schemer/interpreter_spec.rb index 08d545a..f390744 100644 --- a/spec/schemer/interpreter_spec.rb +++ b/spec/schemer/interpreter_spec.rb @@ -49,6 +49,12 @@ module Schemer end end + describe "#inspect" do + it 'returns the object inspected' do + "(inspect x)".should evaluate_to("#") + end + end + describe "#define" do it 'defines a variable' do expression = "(define number 3)"