Следственное
19.01.09 13:48 ◇ keywords: хихик Вы могли бы опознать зубы напавшей на вас собаки?
Вычисляемые умолчания и скрытые аргументы
19.01.09 10:51 ◇ keywords: soft, технологииВ ранних языках программирования умолчаний почти не было и в коде приходилось точно писать «сколько граммов вешать». Более поздние ЯП стали предусматривать различные умолчания. В синтаксисе.
А умолчания в коде? Интересно же смотреть, как работает возможность умолчаний, заставляющая компилятор «достраивать код», угадывая содержимое умолчаний (т.е. «типичные конструкции» для данного контекста) и подставляя скрытые аргументы.
Вот, например:
factorial:=f($)
.() вызов анонимной функции, который компилятор заменяет на рекурсивный вызов; в качестве аргумента подставляется декремент входящего аргумента $; пропущенное условие (в []) заменяется на $=0
Если идти дальше, то получается совсем
factorial:=($)
На место «пропущенного» первого аргумента операции умножения автоматически подставляется $; при рекурсивном вызове операция вычитания разворачивается до
Но тут, правда, придется учитывать, что компилятор будет подставять и разворачивать конструкции несколько иначе, чем человек (программист), поэтому с отладкой будет тяжелее.