Or, with a one-liner (inefficient, though):

unique xs = [x | x <- xs, length (filter (== x) xs) == 1]

L.


On Wed, Mar 28, 2012 at 9:38 AM, <franco00@gmx.com> wrote:
            
Indeed the second snipper contains quite an obvious mistake. Thanks for noticing!

It doesn't seem to me it utilises a lambda expression though? You mean the '.' operator for chaining function? If that's it, it could be rewritten


unique :: [Integer] -> [Integer]
unique []   = []
unique (x:xs) | elem x xs   = unique (filter (/= x) xs)

              | otherwise   = x : unique xs
             





 

----- Original Message -----

From: Ramesh Kumar

Sent: 03/28/12 10:14 AM

To: franco00@gmx.com, beginners@haskell.org

Subject: Re: [Haskell-beginners] Beginners Digest, Vol 45, Issue 35


Thanks Franco, Your (first) solution is the only one which has worked so far although it utilizes a lambda expression.
The problem is indeed tricky.
 
 


From: "franco00@gmx.com" <franco00@gmx.com>
To: beginners@haskell.org
Sent: Wednesday, March 28, 2012 3:39 PM
Subject: Re: [Haskell-beginners] Beginners Digest, Vol 45, Issue 35

gah sorry I obviously meant to reply to the "Unique integers in a list" message



 
----- Original Message -----
Sent: 03/28/12 09:36 AM
Subject: Re: Beginners Digest, Vol 45, Issue 35

unique :: [Integer] -> [Integer]
unique []   = []
unique (x:xs) | elem x xs   = (unique . filter (/= x)) xs
              | otherwise   = x : unique xs

-- This is a simpler to read version (albeit inefficient?)
unique :: [Integer] -> [Integer]
unique []   = []
unique (x:xs) | elem x xs   = unique xs
              | otherwise   = x : unique xs
 

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners

 

 


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners