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)"