Email or username:

Password:

Forgot your password?
(lambda-yam)

Немного боюсь приступать к последнему упражнению из текущего раздела ​:lain_lurk:​
В связи с этим активно прокрастинирую, погружаясь в абсолютно нерелевантную для SICP тему: макросы. Возможно, они появятся позже, но у меня чесались руки написать нормальную функцию для прогона тестов, чтобы не пиать каждый раз print и сопоставлять с результатом. Что (не)характерно, у меня получилось, и выглядит довольно красиво. Примерно вот такой вывод в случае успеха:
OK (+ 2 3): = 5 5
И вот такой в случае неудачи:
FAIL: (+ 2 2): expected 5, got 4

Кстати, создается впечатление, что в Scheme макросы более комплексные, чем в Common Lisp: имеется несколько "трансформеров", которые, если я правильно понимаю (а я пока что очень слабо понимаю) по-разному взаимодействуют с вызывающей средой. Благо, мне пока что хватило самой примитивной конструкции.

1 comment
(lambda-yam)

Ну класс, макросы по каким-то причинам отказываются вызываться из скомпилированной библиотеки.
Круто, что Chicken Scheme умеет собирать .so, но вот, видимо, макросы -- часть синтаксиса, а в библиотеке ожидаются функции.
Если так подумать -- то логично. Макросы же разворачиваются на этапе компиляции, так что в библиотеке их отсутствие логично.
Надо придумать, как можно из этого выкрутиться.

Go Up