[Haskell-beginners] Unique integers in a list

Prasanna K Rao prasannakrao at yahoo.com
Wed Mar 28 07:40:52 CEST 2012


Hi,

One way is to define a 'isin' function like this::

isin x (a:[])  = if (x == a) then True else False
isin x (a:as)  = if (x == a) then True else isin x as

and use it like this::

unique (x:xs)   = if not(isin x xs) then [x] ++ unique(xs) else unique(xs)


or like this::

unique(x:xs)    = [x | x <- (x:xs), not(isin x xs)] ++ unique xs

The later being the preferred one. HTH..

Regards,




________________________________
 From: Ramesh Kumar <rameshkumar.techdynamics at ymail.com>
To: "Beginners at haskell.org" <Beginners at haskell.org> 
Sent: Wednesday, March 28, 2012 3:03 AM
Subject: [Haskell-beginners] Unique integers in a list
 

Hi,

I've just started learning Haskell a couple of weeks ago using Simon Thompson's "Haskell: Craft of Functional Programming".
There is an exercise in chapter 7 of the book which goes something like this:

Define a function of the type:     unique :: [Integer] -> [Integer]
which if given a list of integers, should return a list of those integers which occur only once in the input list.
Example:
   unique [5,2,4,2,3,1,5,2] should result in [4,3,1]


*** The questions assumes we know only of list comprehensions and recursion. 


I am guessing the solution must include something like this:

unique :: [Integer] -> [Integer]
unique xs = [ x | x <- xs, isSingle x ]

My problem is in defining the function 'isSingle'.

I would greatly appreciate any pointers on this.

Many thanks.
Ramesh



_______________________________________________
Beginners mailing list
Beginners at haskell.org
http://www.haskell.org/mailman/listinfo/beginners
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20120327/7358657b/attachment.htm>


More information about the Beginners mailing list