<div style='font-family:Arial; font-size:13px;'>Hi,<div><br></div><div>thank you for the explanation. I know now how not to use it but for deeper understanding.</div><div><br></div><div>question:</div><div>Can a lazy list be ordered or is that just not possible? And how can you create a lazy list like this [1..] without there being any implicit order in it?</div><div><br></div><div>I don't want to be nitt-picking, i am trying to reconcile this paradox for deeper understanding.</div><div><br></div><div>thank you.</div><div><br></div><div>best,</div><div> </div><div><br><div>February 4, 2020 2:44:27 PM CET David McBride <toad3k@gmail.com> wrote:<blockquote type="cite" cite="<CAN+Tr40PBHGghf9tRWDb71zS0Y7-wSyuYL3WK8w04v4uebX5Og@mail.gmail.com>"><div dir="ltr"><div>You can absolutely use a lazy list in a list comprehension. What you cannot do is evaluate an infinitely long list.</div><div><br></div><div>When you evaluate it so that it will be printed you are saying, print the *entire* list. You may know that this list will never contain an element over 100, but as far as haskell is concerned, there could be an element after 100 and it will keep crunching to find it, by incrementing x and testing it against x <= 100 forever, even though it will never succeed.<br></div></div><br><div class=""><div dir="ltr" class="">On Mon, Feb 3, 2020 at 3:14 AM Alexander Chen <<a href="mailto:alexander@chenjia.nl">alexander@chenjia.nl</a>> wrote:<br></div><blockquote class="" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="font-family:Arial;font-size:13px"><div><br></div>hi,<div><br></div><div>I need some understanding on the following behavior:<br><div><br></div><div>a = [1..]</div><div><div>[x | x <-a, x <= 100]</div><div>[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100</div><div><br></div><div>(note the missing ']' which results in the command not finishing)</div><div><br></div><div>b = take 1000 a</div><div><div>[x | x <-b, x <= 100]</div><div>[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]</div></div><div><br></div><div>Note, I took more for b just for ease sake. But now the command finishes correctly.</div><div><br></div><div><br></div><div>Question:</div><div>why can i not use a lazy list directly in a list comprehension?</div><div><br></div><div>best,</div><div><br></div><div><br></div><br><div><div style="font-family:Arial;font-size:13px"><br></div></div></div></div></div>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div>
</blockquote></div><br><br><div><div style="font-family:Arial; font-size:13px;"><br></div></div></div></div>