Class: Hash

Inherits:
Object show all
Defined in:
lib/raskell/array.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.to_stream(xs) ⇒ Object



180
181
182
183
# File 'lib/raskell/array.rb', line 180

def self.to_stream(xs)
  ## have to sort to ensure steream == works
  xs.to_a.sort {|x,y| x.first <=> y.first}.to_stream
end

Instance Method Details

#<<(keyval) ⇒ Object



164
165
166
167
168
# File 'lib/raskell/array.rb', line 164

def <<(keyval)
  raise("Can only push pairs into a dictionary") unless (keyval.kind_of?(Array) || keyval.kind_of?(Stream))
  self[keyval.first]=keyval.last
  self
end

#==(obj) ⇒ Object



186
187
188
# File 'lib/raskell/array.rb', line 186

def ==(obj)
  obj.kind_of?(Stream) ? self.sort.to_stream == obj : standard_equals(obj)
end

#===(obj) ⇒ Object



191
192
193
# File 'lib/raskell/array.rb', line 191

def ===(obj)
  obj.kind_of?(Stream) ? self.to_stream === obj : standard_triple_equals(obj)
end

#deep_cloneObject



195
196
197
# File 'lib/raskell/array.rb', line 195

def deep_clone
  Hash.new(self.map{|k,v| [k.deep_clone, v.deep_clone]})
end

#push(pair) ⇒ Object



170
171
172
173
# File 'lib/raskell/array.rb', line 170

def push(pair)
  self <<(pair)
  self
end

#standard_equalsObject



185
# File 'lib/raskell/array.rb', line 185

alias_method :standard_equals, :==

#standard_triple_equalsObject



190
# File 'lib/raskell/array.rb', line 190

alias_method :standard_triple_equals, :===

#to_streamObject



175
176
177
178
# File 'lib/raskell/array.rb', line 175

def to_stream
  ## have to sort to ensure stream == works
  self.class.to_stream(self)
end