Всем привет. Почитываю на досуге как дополнение к "Real World Haskell" книгу Душкин Р.В. "Справочник по языку Haskell". Имею вопрос по замыканиям. Несколько цитат: "Замыкания или локальные определения - один из механизмов ФП, который предназначен для оптимизации определения функций", "Из-за детерминизма, свойственного ФП, значение локальных определений выч-ся один раз, и оно не может быть изменено в рамках текущего выч. процесса. Это свойство и используется для оптимизации, посколько локальным определением можно обозвать нечто в теле функции, что выч-ся несколько раз. Так как в любом случае при вычислениях будут получены одинаковые рез-ты, локальное определение позволяет выполнить вычисления единожды". В качестве подтверждения приводится пример стандартной ф-ии lines: lines "" = [] lines s = let (l, s') = break ('\n' ==) s in l : case s' of [] -> [] (_:s'') -> lines s'' Мне непонятно, что именно здесь может быть вычислено единожды и что понимается под "вычислительным процессом", ведь каждый раз аргументы у lines меняются. Помогите привести сознание в порядок. Спасибо заранее. :)