Class: Lisp::Symbol
Instance Attribute Summary
Attributes inherited from Atom
#value
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Atom
#all?, #apply_to, #car, #cdr, #character?, #class?, #copy, #doc, #environment?, #eof_object?, #eq?, #equal?, #eqv?, #false?, #frame?, #function?, #length, #lisp_object?, #list?, #macro?, #negative?, #number?, #object?, #pair?, #port?, #positive?, #primitive?, #print_string, #quoted, #set!, #set_location, #special?, #string?, #true?, #vector?, #zero?
Constructor Details
#initialize(n) ⇒ Symbol
Returns a new instance of Symbol.
14
15
16
17
|
# File 'lib/rubylisp/symbol.rb', line 14
def initialize(n)
@value = n
@naked = (n[-1] == ?:)
end
|
Class Method Details
5
6
7
8
9
10
11
12
|
# 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
|
Instance Method Details
#evaluate(env) ⇒ Object
40
41
42
43
44
|
# File 'lib/rubylisp/symbol.rb', line 40
def evaluate(env)
super
return self if @naked
env.value_of(self)
end
|
32
33
34
|
# File 'lib/rubylisp/symbol.rb', line 32
def naked?
@naked
end
|
24
25
26
|
# File 'lib/rubylisp/symbol.rb', line 24
def name
@value
end
|
28
29
30
|
# File 'lib/rubylisp/symbol.rb', line 28
def symbol?
true
end
|
19
20
21
|
# File 'lib/rubylisp/symbol.rb', line 19
def to_naked
Lisp::Symbol.named("#{@value}:")
end
|
46
47
48
|
# File 'lib/rubylisp/symbol.rb', line 46
def to_s
@value
end
|
50
51
52
|
# File 'lib/rubylisp/symbol.rb', line 50
def to_sym
@value.to_sym
end
|
36
37
38
|
# File 'lib/rubylisp/symbol.rb', line 36
def type
:symbol
end
|