LINUX.ORG.RU

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

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

В контрактах есть заморочка, что они лучше работают через модули. А нужны типы только для одной задачи - помочь с дебугом, так как типизация позволяет выловить ошибку ближе всего к месту ее возникновения. Так что контракты то да, но все эти #:freevar напрягают, а без них толку уже меньше.

У тебя странный компилятор.

Ну во-первых он компилит пока что s-expr в s-expr, так что сохранять syntax с оригинальным сорцом - фишка от которой сложно отказаться. Во-вторых любой мало мальски сложный макрос требует выделения частей функционала отдельно, и частенько это выделение приходится именно на ту часть, которая выполняется в фазе 1, что и приводит к необходимости использовать syntax-case в отдельной функции, которой тоже необходимо выдать тип.

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

В контрактах есть заморочка, что они лучше работают через модули. А нужны типы только для одной задачи - помочь с дебугом, так как типизация позволяет выловить ошибку ближе всего к месту ее возникновения. Так что контракты то да, но все эти #:freevar напрягают, а без них толку уже меньше.

У тебя странный компилятор.

Ну во-первых он компилит пока что s-expr в s-expr, так что сохранять syntax с оригинальным сорцом - фишка от которой сложно отказаться. Во-вторых любой мало мальски сложный макрос требует выделения частей функционала отдельно, и частенько это выделение приходится именно на ту часть, которая выполняется в фазе 1, что и приводит к необходимости использовать syntax-case в отдельной функции, которой тоже неодоходимо выдать тип.