class Lisp::Symbol

Public Class Methods

named(n) click to toggle source
# File lib/rubylisp/symbol.rb, line 5
def self.named(n)
  name = n.to_s
  @@symbols ||= {}
  return @@symbols[n] if @@symbols.has_key?(n)
  s = self.new(n)
  @@symbols[n] = s
  s
end
new(n) click to toggle source
# File lib/rubylisp/symbol.rb, line 14
def initialize(n)
  @value = n
  @naked = (n[-1] == ?:)
end

Public Instance Methods

evaluate(env) click to toggle source
Calls superclass method Lisp::Atom#evaluate
# File lib/rubylisp/symbol.rb, line 40
def evaluate(env)
  super
  return self if @naked
  env.value_of(self)
end
naked?() click to toggle source
# File lib/rubylisp/symbol.rb, line 32
def naked?
  @naked
end
name() click to toggle source
# File lib/rubylisp/symbol.rb, line 24
def name
  @value
end
symbol?() click to toggle source
# File lib/rubylisp/symbol.rb, line 28
def symbol?
  true
end
to_naked() click to toggle source
# File lib/rubylisp/symbol.rb, line 19
def to_naked
  Lisp::Symbol.named("#{@value}:")
end
to_s() click to toggle source
# File lib/rubylisp/symbol.rb, line 46
def to_s
  @value
end
to_sym() click to toggle source
# File lib/rubylisp/symbol.rb, line 50
def to_sym
  @value.to_sym
end
type() click to toggle source
# File lib/rubylisp/symbol.rb, line 36
def type
  :symbol
end