В основном это продолжение этот вопрос. Я решил не забывать о 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)))
Я читал документацию по макросам, чтобы попытаться понять это, но я не могу найти способ заставить это работать. Может ли кто-нибудь помочь мне с этим (или хотя бы дать мне общее представление о том, как будет выглядеть макрос)? Или есть способ сделать это без макросов?