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

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


person Matteo    schedule 29.08.2015    source источник


Ответы (1)


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

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

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

person sjamaan    schedule 29.08.2015