# File lib/eval.rb, line 9
    def eval(form)
      # puts "evaling #{form.inspect}"
      if (form.is_a?(Cons) or form.is_a?(Array)) and form.first
        apply(form.first, form.rest)
      elsif form.is_a? Sym or form.is_a? Symbol
        form = form.sym if form.is_a? Symbol
        raise EvalError.new("Undefined symbol: #{form.inspect}") unless Lambda.in_scope?(form)
        Lambda[form]
      else # well it must be a literal then
        form
      end
    end