В книге «Элементы программирования» Александра А. Степанова и Пола МакДжонс указано:
Регулярность функциональных процедур позволяет использовать два метода для передачи входных данных. Когда размер параметра небольшой или если процедуре требуется копия, которую она может изменить, мы передаем ее по значению, делая локальную копию. В противном случае мы передаем его по постоянной ссылке.
Используя следующее определение из книги
Процедура является регулярной, если и только если замена ее входных данных равными объектами приводит к равным выходным объектам.
Давайте предположим, что существует тип объекта, который представляет логические значения в одном слове, назовем его foolean. 0 интерпретируется как false, а все остальные состояния (1 ... n) интерпретируются как true.
Теперь давайте предположим, что существует процедура, которая принимает значение типа foolean и возвращает его представление в виде строки нулей и единиц.
Эта процедура явно не является регулярной, поскольку можно передать ей много истинных значений, и она будет возвращать различные выходные объекты. Однако я не понимаю, как было бы проблематично передать ему входные данные по значению или константной ссылке (за исключением того факта, что наличие такого типа данных было бы неуместным для начала!).
Что такое регулярность функциональных процедур в отличие от других процедур, которые допускают две техники?