поражает, что макросы требуют тащить компилятор в рантайм. Я не критикую если что
"Всегда так было". Кроме того, последующие версии семантику и суть происходящего особо не меняли... 🤷♀
Ну просто схема порой так подаётся, как язык, который минималистичнее в смысле кода необходимого для имплементации, чем common lisp. В том плане, что стандарт R7RS будет поменьше общелиспового, в смысле даже сам документ стандарта
Сам tree-walking интерпретатор включая синтаксический анализ вышел строк наверное в 150-200, все остальное макросы/функции, которые просто изначально есть в окружении, так что да язык очень маленький. Причем, что под более поздние схемы сам интерпретатор адаптировать не так сложно, т.к. все те же sexp
Common Lisp сильно обширнее в смысле всяких builtins и прочей стандартной библиотеки (CLOS anyone? 😏), поэтому "при прочих равных", конечно, требует больше кода. Второй момент, что минимальный tree-walking interpreter для Scheme с гомоиконным представлением действительно несложно написать, и не занимает много кода (хотя в Scheme syntax objects, так что не особо гомоиконно, но тем не менее). А вот с более продвинутыми интерпретаторами/компиляторами становится сложнее. Но это для любого языка так.
Обсуждают сегодня