From: sellberg@... Date: 2017-01-30T12:51:25+00:00 Subject: [ruby-core:79307] [Ruby trunk Bug#13146] Float::NANs in Hashes are confusing (more than usual). Issue #13146 has been updated by Linus Sellberg. Nobuyoshi Nakada wrote: > Are you suggesting to make infinities and a NaN multiton? One alternative is to copy the approach given here: https://research.swtch.com/randhash TLDR: 1: NaN is given a random hash (to avoid hash key collisions). 2: Hash insertion work, but never overwrite - always adds a new key. 3: Lookup never finds anything 4: Iteration over the values works. ---------------------------------------- Bug #13146: Float::NANs in Hashes are confusing (more than usual). https://bugs.ruby-lang.org/issues/13146#change-62719 * Author: Linus Sellberg * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.3.1p112 * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- ```ruby test = {Float::NAN => 1, -Float::NAN => 2} => {NaN=>1, NaN=>2} test.values_at(Float::NAN, -Float::NAN) => [1, nil] ``` I don't know what the correct behaviour ought to be, but it seems inconsistent to create a hash with two elements but not be able to extract both values. -- https://bugs.ruby-lang.org/ Unsubscribe: