One of the most powerful constructs in Haskell is list comprehensions ( for mathematicians: this term comes from the Axiom of Comprehension of Zermelo-Frankel set theory ). Like other functional languages , Haskell builds a lot of power on top of manipulation of lists. In Haskel , however , it is possible to gene ate a list in a compact form that simply states here the list elements come from and what criteria elements meet. List described with list comprehensions must be generated from other starting lists; but fortunately , Haskell also provides a quick enumeration syntax to specify starting lists