Как связать макрос внутри лямбды в 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 ответа

Решение

"Расширение" сделает работу, и вы также можете посмотреть на "Летекс", который является комбинацией "пусть" и "расширить".

Неважно, я нашел это...

Оказывается, мне нужно использовать расширение.

Другие вопросы по тегам