Skip to content

Change implementation of intersectBy

Currently, intersectBy eq xs [] takes O(length xs) time to calculate and returns | on (x : |). The proposed change,

intersectBy             :: (a -> a -> Bool) -> [a] -> [a] -> [a]
intersectBy _  [] _     =  []
intersectBy _  _  []    =  []
intersectBy eq xs ys    =  [x | x <- xs, any (eq x) ys]

makes this an O(1) operation and returns [] for infinite or partial (... : |) lists xs. The first equation is necessary to retain intersectBy _ [] | = [].

Trac metadata
Trac field Value
Version 6.12.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component libraries/base
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information