kewise we want only positions to contribute to addition that are larger than the previous ones

-- addDetailedRange (DetailedRange l) (DetailedRange l') = DetailedRange $ l ++ l'

-- ok, but not necessary maybe
-- addDetailedRange (DetailedRange l) (DetailedRange l') = DetailedRange $ l ++ [x | x <- l', (x >=) `all` l ]

-- this should be enough, and faster
addDetailedRange (DetailedRange []) (DetailedRange l') = DetailedRange l'

add
addDetailedRange (DetailedRange []) (DetailedRange l') = DetailedRange l'
addDetailedRange (DetailedRange []) (DetailedRange l') = DetailedRange l'