A bug in IntMap
Malcolm Wallace
Malcolm.Wallace at cs.york.ac.uk
Wed Jul 6 07:05:13 EDT 2005
"Simon Peyton-Jones" <simonpj at microsoft.com> writes:
> Christian posted a bug to Sourceforge concerning the IntMap library,
> function split.
>
> Can anyone shed any light? Better still, fix it?
I consider the best approach for a bug like this is to use QuickCheck
to find a small failing case, then Hat to discover the cause of the
failure. The first part was easy, but unfortunately the library
Data.IntMap does not yet have a traced version within Hat. So,
I have a clearer formulation of the problem, but no solution yet.
In the meantime,
> "keys $ split 5 $ theMap" sometimes returns values greater 5.
I think you probably mean
keys $ fst $ split 5 $ theMap
And a failing case is the map
{0:=1,1:=0,2:=0,3:=1,6:=-1,7:=0,8:=-2,9:=-2}
which you can generate with e.g.
theMap = (insert 0 1 . insert 1 0 . insert 2 0 . insert 3 1 . insert 6 (-1)
. insert 7 0 . insert 8 (-2) . insert 8 (-2))
empty
The result of split 5 myMap is
({0:=1,1:=0,2:=0,3:=1,6:=-1}, {7:=0,8:=-2})
where clearly the mapping for 6 is in the wrong half of the result.
Regards,
Malcolm
More information about the Libraries
mailing list