[Haskell-cafe] [] \\ [1..] diverges - intended?

Henk-Jan van Tuyl hjgtuyl at chello.nl
Sat Jul 26 20:55:05 UTC 2014


On Sat, 26 Jul 2014 21:39:01 +0200, Niklas Hambüchen <mail at nh2.me> 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

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 at 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
--


More information about the Haskell-Cafe mailing list