(define impc:ti:unique-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-not (lambda (x) (equal? (vector-ref x 1) func-type)) candidates))
(set! candidates (impc:ti:get-polyfunc-candidate-list polyfunc-name))
(if (= (length candidates) 1)
(begin (impc:ti:create-scheme-wrapper (vector-ref (car candidates) 0))
(println 'Success! (string->symbol polyfunc-name) 'is 'now 'monomorphic!))
(impc:compiler:print-compiler-error (string-append "Could not make " polyfunc-name " monomorphic"))))))