<commit_before>import Base.in
import Base.==
import Base.length
import Base.start
import Base.done
import Base.next
import Base.string
import Base.enumerate

immutable TSet
    dict::Dict{Array{Any},Any}

    TSet() = new(Dict{Array{Any},Any}())
    TSet(itr) = new([Any[x, typeof(x)] => x for x in itr])
end

in(x, s::TSet) = haskey(s.dict, Any[x, typeof(x)])
==(s::TSet, t::TSet) = ==(s.dict, t.dict)
length(s::TSet) = length(s.dict)
start(s::TSet) = start(s.dict)<commit_msg>switching from array to tuple for composite key in backing dict resolves inconsistencies with ==, in, haskey for Array keys<commit_after>import Base.in
import Base.==
import Base.length
import Base.start
import Base.done
import Base.next
import Base.string
import Base.enumerate
import Base.isequal


immutable TSet
    dict::Dict{Tuple{Any,DataType},Any}

    TSet() = new(Dict{Tuple{Any,DataType},Any}())
    TSet(itr) = new([(x, typeof(x)) => x for x in itr])
end

in(x, s::TSet) = haskey(s.dict, (x, typeof(x)))
==(s::TSet, t::TSet) = ==(s.dict, t.dict)
length(s::TSet) = length(s.dict)
start(s::TSet) = start(s.dict)
{'fraction_non_alphanumeric': 0.17743403093721566, 'fraction_numerical': 0.0, 'mean_word_length': 5.179775280898877, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2673523', 'n_tokens_mistral': 421, 'n_tokens_neox': 422, 'n_words': 105}