impc:ti:unique-polyfunc-candidate   scheme


Defined in:  https://github.com/digego/extempore/tree/v0.8.9/runtime/llvmti.xtm

Implementation

(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"))))))


Back to Index