Commit 3b03f47b authored by Ian Lynagh's avatar Ian Lynagh

Use the standard library versions of elem and notElem

rather than our own copies
parent 8066838a
...@@ -386,36 +386,27 @@ Debugging/specialising versions of \tr{elem} and \tr{notElem} ...@@ -386,36 +386,27 @@ Debugging/specialising versions of \tr{elem} and \tr{notElem}
isIn, isn'tIn :: Eq a => String -> a -> [a] -> Bool isIn, isn'tIn :: Eq a => String -> a -> [a] -> Bool
# ifndef DEBUG # ifndef DEBUG
isIn _msg x ys = elem__ x ys isIn _msg x ys = x `elem` ys
isn'tIn _msg x ys = notElem__ x ys isn'tIn _msg x ys = x `notElem` ys
--these are here to be SPECIALIZEd (automagically)
elem__ :: Eq a => a -> [a] -> Bool
elem__ _ [] = False
elem__ x (y:ys) = x == y || elem__ x ys
notElem__ :: Eq a => a -> [a] -> Bool
notElem__ _ [] = True
notElem__ x (y:ys) = x /= y && notElem__ x ys
# else /* DEBUG */ # else /* DEBUG */
isIn msg x ys isIn msg x ys
= elem (_ILIT(0)) x ys = elem100 (_ILIT(0)) x ys
where where
elem _ _ [] = False elem100 _ _ [] = False
elem i x (y:ys) elem100 i x (y:ys)
| i ># _ILIT(100) = trace ("Over-long elem in " ++ msg) | i ># _ILIT(100) = trace ("Over-long elem in " ++ msg)
(x `List.elem` (y:ys)) (x `elem` (y:ys))
| otherwise = x == y || elem (i +# _ILIT(1)) x ys | otherwise = x == y || elem100 (i +# _ILIT(1)) x ys
isn'tIn msg x ys isn'tIn msg x ys
= notElem (_ILIT(0)) x ys = notElem100 (_ILIT(0)) x ys
where where
notElem _ _ [] = True notElem100 _ _ [] = True
notElem i x (y:ys) notElem100 i x (y:ys)
| i ># _ILIT(100) = trace ("Over-long notElem in " ++ msg) | i ># _ILIT(100) = trace ("Over-long notElem in " ++ msg)
(x `List.notElem` (y:ys)) (x `notElem` (y:ys))
| otherwise = x /= y && notElem (i +# _ILIT(1)) x ys | otherwise = x /= y && notElem100 (i +# _ILIT(1)) x ys
# endif /* DEBUG */ # endif /* DEBUG */
\end{code} \end{code}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment