title: Generating subsets of set. Laziness?
body: <p>I have written a function generating subsets of subset. It caused stack overflow when I use in the following way <code>subsets [1..]</code>. And it is "normal" behaviour when it comes to "normal" (no-lazy) languages. And now, I would like to improve my function to be lazy. </p>
  
  <p>P.S. I don't understand laziness ( And I try to understand it) so perhaps my problem is strange for you- please explain. :)</p>
  
  <p>P.S. 2 Feel free to say me something about my disability in Haskell ;)</p>
  
  <pre><code>subsets :: [a] -&gt; [[a]]
  subsets (x:xs) = (map (\ e -&gt; x:e) (subsets xs)) ++ (subsets xs)
  subsets [] = [[]]
  </code></pre>