Головна сторінка Груп Google
Довідка | Записатися
Допис з розмови Why my list function eats memory?
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис було надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, які ви бачите на зображенні нижче або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Paul Graphov  
Переглянути профіль
 Більше налаштувань 29 Вер 2008, 09:12
Групи новин: comp.lang.haskell
Від: Paul Graphov <grap...@gmail.com>
Дата: Sun, 28 Sep 2008 23:12:49 -0700 (PDT)
Локально: Пн 29 Вер 2008 09:12
Тема: Re: Why my list function eats memory?

> Honestly I have no idea.  This may be a compiler or interpreter issue.
> It works without problems for me (GHC 6.8.3), even in interpreter mode.

It seems that i got it. It's due to too much lazyness...

"map (take n) . iterate (drop d)" will produce list like this:

[(take n x), (take n (drop d x)), (take n (drop d (drop d x))), (take
n (drop d (drop d (drop d x)))),.....]
And all these chunks are not evaluated until I actually use them. So
it causes stack overvlow
when i try to evaluate million of nested drops.

And "takeWhile (not . null)" actually pattern matches them against
"[]" so they are forced to be calculated.

It's strange that it can work different ways...

Thanks.


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.

Створити групу - Групи Google - Домівка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2009 Google