(define-macro (llvm:ir name . type)
  (let ((t (if (null? type) #f (car type))))
    `(let* ((n1 ,(if t
                     `(impc:ti:get-mono-name ,name ,t)
                     `(impc:ti:get-mono-name ,name)))
            (n2 (llvm:get-closure-work-name n1)))
       ;; (println 'n1 n1 'n2 n2)
       (llvm:print-closure n2))))