(define impc:ti:remove-polyfunc-candidate
(lambda (polyfunc-name func-type)
(let* ((candidates (impc:ti:get-polyfunc-candidate-list polyfunc-name))
(n (assoc-strcmp polyfunc-name *impc:ti:polyfunc-cache*))
(v (cdr n)))
(vector-set! v 0 (cl:delete-if (lambda (x) (equal? (vector-ref x 1) func-type)) candidates))
(set! candidates (impc:ti:get-polyfunc-candidate-list polyfunc-name))
(println 'Removed (string->symbol polyfunc-name))
(if (= (length candidates) 1)
(impc:ti:create-scheme-wrapper (vector-ref (car candidates) 0))))))