(define set!

(native_function "
  Proc.new() do |arguments, interpreter|
    if( interpreter.current_environment.find(arguments[0]) == nil)
      raise 'Cannot set unbound variable ' + arguments[0]
    end
    interpreter.current_environment.define(arguments[0], arguments[1])
  end
"))