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 |