История изменений
Исправление q0tw4, (текущая версия) :
В контрактах есть заморочка, что они лучше работают через модули. А нужны типы только для одной задачи - помочь с дебугом, так как типизация позволяет выловить ошибку ближе всего к месту ее возникновения. Так что контракты то да, но все эти #:freevar напрягают, а без них толку уже меньше.
У тебя странный компилятор.
Ну во-первых он компилит пока что s-expr в s-expr, так что сохранять syntax с оригинальным сорцом - фишка от которой сложно отказаться. Во-вторых любой мало мальски сложный макрос требует выделения частей функционала отдельно, и частенько это выделение приходится именно на ту часть, которая выполняется в фазе 1, что и приводит к необходимости использовать syntax-case в отдельной функции, которой тоже необходимо выдать тип.
Исходная версия q0tw4, :
В контрактах есть заморочка, что они лучше работают через модули. А нужны типы только для одной задачи - помочь с дебугом, так как типизация позволяет выловить ошибку ближе всего к месту ее возникновения. Так что контракты то да, но все эти #:freevar напрягают, а без них толку уже меньше.
У тебя странный компилятор.
Ну во-первых он компилит пока что s-expr в s-expr, так что сохранять syntax с оригинальным сорцом - фишка от которой сложно отказаться. Во-вторых любой мало мальски сложный макрос требует выделения частей функционала отдельно, и частенько это выделение приходится именно на ту часть, которая выполняется в фазе 1, что и приводит к необходимости использовать syntax-case в отдельной функции, которой тоже неодоходимо выдать тип.