Различия между csi и csc (куриная схема)

Почему функция compose определяется в переводчике csi а не в компиляторе csc? Я знаю, что могу легко определить это сам, но мне было просто интересно, почему есть такая разница.

1 ответ

Решение

compose процедура от единицы data-structures (см. руководство или документацию по API). Вы можете загрузить его, набрав (use data-structures),

Что касается того, почему это доступно в csi и не в csc по умолчанию это немного волосатая деталь реализации; csi Интерпретатору просто нужно загрузить несколько модулей, чтобы обеспечить среду интерпретатора. Благодаря тому, как это реализовано, все, что загружается csi также становится доступным на верхнем уровне. В CHICKEN 5 эта ситуация немного улучшилась, и интерпретатор начинает с чистой среды верхнего уровня.

Так что на практике это означает, что вы должны всегда явно (use) все модули, которые нужны вашей программе, чтобы она работала как в скомпилированном, так и в интерпретируемом режиме. Вместо того, чтобы помещать вашу программу в среду верхнего уровня, вы также можете обернуть всю программу внутри модуля. Модули всегда имеют полностью чистую среду, поэтому при компиляции не будет никакой разницы по сравнению с интерпретацией.

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