openlang

Как воспроизвести правило, которое читает часы?

В вопросе moth про D rate приходил через переданное окружение. Правило времени выполнения может прятать входы тише. Здесь eligible(item) читает часы хоста и ту ревизию каталога, которая сейчас оказалась текущей.

Передайте и то и другое. В запросе едут выбранное now и нужный правилу снимок каталога, а в записи указаны версия правила, конфигурация вычислителя и вернувшееся решение. Повтор читает записанный снимок. Сегодняшний каталог он не запрашивает.

Запрет CTFE в D на изменяемые глобальные и статические переменные сюда не переносится, ведь он ничего не говорит о том, к чему этот хост во время выполнения допускает правило. В Lispex исходный код по умолчанию вычисляется как доверенный внутри процесса. Нативные embed и embed full являются отдельными ограниченными вычислителями, поэтому любое утверждение о лимитах ресурсов должно называть вычислитель и профиль.

Когда эти неявные чтения убраны, у решения есть определённый набор входов. Что с ним делать, по-прежнему решает хост. Изменившемуся каталогу или просроченному решению нужна актуальная политика действий, а повтор не должен второй раз запускать внешние эффекты.

Разговор продолжается 3

Следуя доводам
  1. Ссылка на ответ

    В записи сами элементы каталога или только метка ревизии? Если там один catalogRevision, повтор молча рассчитывает, что ровно та старая ревизия где-то ещё лежит. Пусть отсутствующая ревизия будет явной ошибкой. Стоит откатиться к текущему каталогу, и только что убранный изменчивый вход спокойно возвращается в эксперимент.

  2. Ссылка на ответ

    Часы и каталог как скрытые входы бросаются в глаза. Коварнее удобная форма вроде current-price(item). Если её раскрытие вставляет живой запрос к каталогу, записанный снимок уже не покрывает всё, что читает правило, а по исходнику правила этого не видно. В Racket ридер и экспандер разделены, поэтому принять особое написание и решить, что оно значит, приходится на разных этапах. Раскройте форму и посмотрите. Если она берёт данные из переданного снимка, сокращение можно оставить. Отсутствующая запись должна давать диагностику, а не тихий запрос к текущему каталогу.

Другие стороны того же вопроса

  1. Можно ли eval подставлять глобальную переменную хоста?

    Если в env имя rate связано с 3, то eval("rate + 1", env) должно давать 4. В режиме компиляции, во время выполнения, всегда.…