# Empty list

8 messages
Open this post in threaded view
|

## Empty list

 Hi, Can someone please explain why this results in error - [] `elem` [1,2,3] Shouldn't the empty set by definition be the element of all sets including a non-empty set ? I am assuming 'Lists' are different from 'Sets' in Haskell, if yes, is there a separate module for dealing/working with sets ? Thanks, Shishir Srivastava -------------- next part -------------- An HTML attachment was scrubbed... URL:
Open this post in threaded view
|

## Empty list

 You are correct, a list is not a set. A list is a list of things, that can be there multiple times. A set is a set of things, where nothing can be twice. So take a look at Data.Set Am 25.03.2015 14:55 schrieb "Shishir Srivastava" < shishir.srivastava at gmail.com>: > Hi, > > Can someone please explain why this results in error - > > [] `elem` [1,2,3] > > Shouldn't the empty set by definition be the element of all sets including > a non-empty set ? > > I am assuming 'Lists' are different from 'Sets' in Haskell, if yes, is > there a separate module for dealing/working with sets ? > > Thanks, > Shishir Srivastava > > > _______________________________________________ > Beginners mailing list > Beginners at haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners> > -------------- next part -------------- An HTML attachment was scrubbed... URL:
Open this post in threaded view
|

## Empty list

 On Wed, Mar 25, 2015 at 10:00 AM, Norbert Melzer wrote: > You are correct, a list is not a set. A list is a list of things, that can > be there multiple times. A set is a set of things, where nothing can be > twice. So take a look at Data.Set > Note that this won't actually solve the original problem; Haskell is an implementation of a strongly typed lambda calculus, not of number theory, and Haskell collections cannot (easily) contain elements of different types --- so the empty set is not an element of a set, and the empty list is not an element of a list. -- brandon s allbery kf8nh                               sine nomine associates allbery.b at gmail.com                                  ballbery at sinenomine.net unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net-------------- next part -------------- An HTML attachment was scrubbed... URL:
Open this post in threaded view
|

## Empty list

 In reply to this post by Shishir Srivastava On Wed, Mar 25, 2015 at 8:55 AM, Shishir Srivastava < shishir.srivastava at gmail.com> wrote: > Hi, > > Can someone please explain why this results in error - > > [] `elem` [1,2,3] > > Shouldn't the empty set by definition be the element of all sets including > a non-empty set ? > Norbert gave you the information about Lists and Data.Set, but you're wrong about the properties of the empty set. The empty set is a SUBSET of all sets. But it's only a MEMBER of supersets of {{}}. -------------- next part -------------- An HTML attachment was scrubbed... URL:
Open this post in threaded view
|

## Empty list

 In reply to this post by Brandon Allbery Shishir, you need to distinguish between membership (1 is an element of [1,2,3], [] is not) and subsets (both [1] and [] are subsets of [1,2,3]). elem checks the first property, intersection checks the second. On Wed, 25 Mar 2015 10:03 Brandon Allbery wrote: > On Wed, Mar 25, 2015 at 10:00 AM, Norbert Melzer > wrote: > >> You are correct, a list is not a set. A list is a list of things, that >> can be there multiple times. A set is a set of things, where nothing can be >> twice. So take a look at Data.Set >> > > Note that this won't actually solve the original problem; Haskell is an > implementation of a strongly typed lambda calculus, not of number theory, > and Haskell collections cannot (easily) contain elements of different types > --- so the empty set is not an element of a set, and the empty list is not > an element of a list. > > -- > brandon s allbery kf8nh                               sine nomine > associates > allbery.b at gmail.com > ballbery at sinenomine.net > unix, openafs, kerberos, infrastructure, xmonad > http://sinenomine.net>  _______________________________________________ > Beginners mailing list > Beginners at haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners> -------------- next part -------------- An HTML attachment was scrubbed... URL:
Open this post in threaded view
|

## Empty list

 In reply to this post by Brandon Allbery On Wed, Mar 25, 2015 at 9:03 AM, Brandon Allbery wrote: > On Wed, Mar 25, 2015 at 10:00 AM, Norbert Melzer > wrote: > >> You are correct, a list is not a set. A list is a list of things, that >> can be there multiple times. A set is a set of things, where nothing can be >> twice. So take a look at Data.Set >> > > Note that this won't actually solve the original problem; Haskell is an > implementation of a strongly typed lambda calculus, not of number theory, > and Haskell collections cannot (easily) contain elements of different types > --- so the empty set is not an element of a set, and the empty list is not > an element of a list. > Did you forget a couple of "necessarily"'s? Prelude Data.Set> [] `elem` [[]] True Prelude Data.Set> empty `member` (insert empty empty) True -------------- next part -------------- An HTML attachment was scrubbed... URL: