Это в основном продолжение этого вопроса . Я решил просто помнить о YAGNI и создал глобальную переменную (libpython
). Сначала я установил #f
, затем set!
, когда вызывается init
. Я добавил функцию, которая должна обрабатывать проверку, было ли инициализировано это значение:
(define (get-cpyfunc name type)
(lambda args
(if libpython
(apply (get-ffi-obj name libpython type) args)
(error "Call init before using any Python C functions"))))
Итак, вот что я хочу сделать. Я хочу определить макрос, который будет принимать следующее:
(define-cpyfunc Py_Initialize (_fun -> _void))
И преобразовать это в это:
(define Py_Initialize (get-cpyfunc "Py_Initialize" (_fun -> _void)))
Я читал документацию по макросам, чтобы попытаться выяснить это, но я не могу найти способ заставить его работать. Может ли кто-нибудь помочь мне с этим (или хотя бы дать общее представление о том, как будет выглядеть макрос)? Или есть способ сделать это без макросов?