LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

По-моему эта концепция весьма сильно противоречит основополагающим принципам ФП: а именно вызов функции с одними и теми же параметрами всегда должен приводить к одному и тому же результату. Или имеется в виду, что вроде как функция «подстраивается» под логику исполнения: если её всегда вызывают в каком-то простом варианте, то она сама себя модифицирует, чтобы не выполняться слишком долго?

Кстати, заметьте особо: в системах реального времени это самое время - тоже очень важный результат выполнения функции. Это примерно как с выполнением работ в реальной жизни: результатом является не только непосредственно продукт выполнения трудовой деятельности, но и время выполнения работ. Особенно хорошо это заметно из того, что для абсолютного большинства работ как раз сам продукт трудовой деятельности определён куда менее жёстко, нежели сроки для его получения. Так и с функцией: если вы хотите иметь Систему, предсказуемо ведущую себя при прочих равных условиях, то время выполнения функции должно быть всё-таки предсказуемым. Например, если это функция записи в ОЗУ, то в ОС РВ недопустимо, чтобы в одних случаях запись длилась 10 микросекунд, а в других - тот же объём данных записывался уже 10 секунд только потому что «ой, подождите, вы давно не писали в эту область памяти, и мы уже успели сбросить её на диск...»

По-моему всё-таки это будет работать правильно только на реальной LISP-машине, в противном случае это будет не более, чем красивая абстракция над кучей функций, сгенерированных под разные стратегии исполнения.

Ну и да, объясните мне разницу между функцией, изменяющей саму себя и функцией, изменящей глобальную по отношению к ней переменную, чтобы модифицировать логику своего поведения? В реальной жизни оно ведь так и бывает с глобальными переменными: довольно часто они содержат неку информацию для запоминания «настроечного состояния» - и какая нафиг разница, запоминается это состояние в самом теле функции или в переменной?

Исправление DRVTiny, :

По-моему эта концепция весьма сильно противоречит основополагающим принципам ФП: а именно вызов функции с одними и теми же параметрами всегда должен приводить к одному и тому же результату. Или имеется в виду, что вроде как функция «подстраивается» под логику исполнения: если её всегда вызывают в каком-то простом варианте, то она сама себя модифицирует, чтобы не выполняться слишком долго?

По-моему всё-таки это будет работать правильно только на реальной LISP-машине, в противном случае это будет не более, чем красивая абстракция над кучей функций, сгенерированных под разные стратегии исполнения.

Ну и да, объясните мне разницу между функцией, изменяющей саму себя и функцией, изменящей глобальную по отношению к ней переменную, чтобы модифицировать логику своего поведения? В реальной жизни оно ведь так и бывает с глобальными переменными: довольно часто они содержат неку информацию для запоминания «настроечного состояния» - и какая нафиг разница, запоминается это состояние в самом теле функции или в переменной?

Исходная версия DRVTiny, :

По-моему эта концепция веьсма сильно противоречит основополагающим принципам ФП: а именно вызов функции с одними и теми же параметрами всегда должен приводить к одному и тому же результату. Или имеется в виду, что вроде как функция «подстраивается» под логику исполнения: если её всегда вызывают в каком-то простом варианте, то она сама себя модифицирует, чтобы не выполняться слишком долго?

По-моему всё-таки это будет работать правильно только на реальной LISP-машине, в противном случае это будет не более, чем красивая абстракция над кучей функций, сгенерированных под разные стратегии исполнения.

Ну и да, объясните мне разницу между функцией, изменяющей саму себя и функцией, изменящей глобальную по отношению к ней переменную, чтобы модифицировать логику своего поведения? В реальной жизни оно ведь так и бывает с глобальными переменными: довольно часто они содержат неку информацию для запоминания «настроечного состояния» - и какая нафиг разница, запоминается это состояние в самом теле функции или в переменной?