Как связать макрос внутри лямбды в newLISP?
Итак, у меня есть эта функция:
(define (try try-block catch-block finally-block)
; Implements try/catch/finally like in most other languages
)
для которого я хотел бы создать "вспомогательный" макрос, который избегает необходимости говорить (lambda () ...)
снова и снова, вроде как set
а также setq
:
(define-macro (tryq try-block catch-block finally-block)
(try
(lambda () (eval try-block))
(lambda () (eval catch-block))
(lambda () (eval finally-block))))
Тем не менее, потому что lambda
задерживает свои аргументы, вышеуказанная программа не работает - try-block
внутри eval
к моменту его оценки пусто, так как оно находится внутри lambda
,
Как мне правильно реализовать эту функцию?
2 ответа
Решение
"Расширение" сделает работу, и вы также можете посмотреть на "Летекс", который является комбинацией "пусть" и "расширить".
Неважно, я нашел это...
Оказывается, мне нужно использовать расширение.