LINUX.ORG.RU

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

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

Автоматическую напоминалку не забыть проверить (самостоятельно) входные данные, т.е. то, что достигается минимальным уровнем самодисциплины (и у маломальски опытных питонистов-пэхапэшников делается автоматом). Это жульничество, настоящее жульничество.

Получаем возможность не проверять входные данные в каждой функции.

Вот есть функции для работы со списками: car, cdr, map, filter, …

Если язык динамический, то в первой строке каждой из них надо проверить, что переданный аргумент нужного типа. Или не проверить и тогда пользователь вместо осмысленной ошибки «в вызове map(f, 1) второй аргумент должен быть списком» получит что-то вроде «в вызове map(f, 1) первый аргумент функции car не является списком». Причём ошибка будет при выполнении программы.

Если язык статический, то достаточно указать нужный тип и любая попытка передать значение не того типа будет наказываться осмысленной руганью при компиляции.

А при выполнении функции ни одного такта не будет потрачено на проверку того, что данные переданы верно, так как это уже проверено при компиляции.

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

Автоматическую напоминалку не забыть проверить (самостоятельно) входные данные, т.е. то, что достигается минимальным уровнем самодисциплины (и у маломальски опытных питонистов-пэхапэшников делается автоматом). Это жульничество, настоящее жульничество.

Получаем возможность не проверять входные данные в каждой функции.

Вот есть функции для работы со списками: car, cdr, map, filter, …

Если язык динамический, то в первой строке каждой из них надо проверить, что переданный аргумент нужного типа. Или не проверить и тогда пользователь вместо осмысленной ошибки «в вызове map(f, 1) второй аргумент должен быть списком» получит что-то вроде «в вызове map(f, 1) первый аргумент функции car не является списком». Причём ошибка будет при выполнении программы.

Если язык статический, то достаточно указать нужный тип и любая попытка передать значение не того типа будет наказываться осмысленной руганью при компиляции.

А при выполнении функции ни одного такта не будет потрачено на проверку того, что данные переданы верно, так как это уже проверено при компиляции.