class Hamster::Trie
def delete_at(index = @entries.index { |e| e })
def delete_at(index = @entries.index { |e| e }) yield(@entries[index]) if block_given? if size > 1 entries = @entries.dup child = @children[index] if child children = @children.dup children[index] = child.delete_at do |entry| entries[index] = entry end else entries[index] = nil end self.class.new(@significant_bits, @size - 1, entries, children || @children) end end