Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

О ленивости

Возьмем такой пример (за порядок аргументов не отвечаю, главное что смысл был ясен):
f n = fold1 (+) [1..n]
Функции семейства fold строги по своим списковым аргументам, так как их останавливаемость не зависит от нормального или аппликативного порядка редукции, и передача жопы вместо списка приведет к жопе _|_.

Но будете ли Вы рады, если f 123456789 выделит в ходе предвычисления списка 482 мегабайта памяти? Для эффективного вычисления данной функции нужно то, что я называю словом "ленивость". Нормальный порядок редукции - это никакая не ленивость.

Например, я могу передать в LISP с аппликативным порядком какую-нибудь функцию makeList 1 n которая вернет stream, и всё нормально будет работать и ничего не есть, несмотря на полное отсутствие нормального порядка редукции.

Есть ли литература именно по ленивости в таком, узком смысле этого слова?
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 31 comments