
Hi!
On Sun, Jul 27, 2014 at 12:55 AM, Henk-Jan van Tuyl
On Sat, 26 Jul 2014 21:39:01 +0200, Niklas Hambüchen
wrote: Hi,
I just noticed that
import Data.List [] \\ [1..]
diverges, although technically it doesn't have to (the docs suggest to me that it could just be [], and a non-diverging implementation is possible).
Same for [1,2] \\ [1..] of course.
You can define (\\) as follows, terminating in case of the samples you gave:
(\\) :: (Eq a) => [a] -> [a] -> [a] (\\) [] _ = [] (\\) _ [] = [] (\\) xs (y : ys) = delete y xs \\ ys
Is this actually correct? Shouldn't the second line be (\\) x [] = x ?
but this will not terminate in cases like: [0] \\ [1..]
I don't think there is a way to get this terminating for all cases.
Regards, Henk-Jan van Tuyl
-- Folding@home What if you could share your unused computer power to help find a cure? In just 5 minutes you can join the world's biggest networked computer and get us closer sooner. Watch the video. http://folding.stanford.edu/
http://Van.Tuyl.eu/ http://members.chello.nl/hjgtuyl/tourdemonad.html Haskell programming --
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Sincerely yours, -- Daniil