(define-macro (unbind-func symname)
`(begin
(llvm:remove-globalvar ,(string-append (symbol->string symname) "_var"))
(llvm:erase-function ,(symbol->string symname))
(llvm:erase-function ,(string-append (symbol->string symname) "_setter"))
(llvm:erase-function ,(string-append (symbol->string symname) "_getter"))
(llvm:erase-function ,(string-append (symbol->string symname) "_maker"))
(llvm:erase-function ,(string-append (symbol->string symname) "_callback"))
(llvm:erase-function ,(string-append (symbol->string symname) "_native"))
(llvm:erase-function ,(string-append (symbol->string symname) "_maker"))
(llvm:remove-globalvar ,(string-append (symbol->string symname) "_var_zone"))
(if (llvm:get-function ,(string-append (symbol->string symname) "_scheme"))
(llvm:erase-function ,(string-append (symbol->string symname) "_scheme")))))