Различия между csi и csc (куриная схема)
Почему функция compose
определяется в переводчике csi
а не в компиляторе csc
? Я знаю, что могу легко определить это сам, но мне было просто интересно, почему есть такая разница.
1 ответ
compose
процедура от единицы data-structures
(см. руководство или документацию по API). Вы можете загрузить его, набрав (use data-structures)
,
Что касается того, почему это доступно в csi
и не в csc
по умолчанию это немного волосатая деталь реализации; csi
Интерпретатору просто нужно загрузить несколько модулей, чтобы обеспечить среду интерпретатора. Благодаря тому, как это реализовано, все, что загружается csi
также становится доступным на верхнем уровне. В CHICKEN 5 эта ситуация немного улучшилась, и интерпретатор начинает с чистой среды верхнего уровня.
Так что на практике это означает, что вы должны всегда явно (use)
все модули, которые нужны вашей программе, чтобы она работала как в скомпилированном, так и в интерпретируемом режиме. Вместо того, чтобы помещать вашу программу в среду верхнего уровня, вы также можете обернуть всю программу внутри модуля. Модули всегда имеют полностью чистую среду, поэтому при компиляции не будет никакой разницы по сравнению с интерпретацией.