[rdnzl-devel] Re: RDNZL problem

Iver Odin Kvello iverodin at gmail.com
Mon Feb 4 21:35:07 UTC 2008


The function got formatted. Here it is again:

(defun resolve-generic-type (generic-type-definition)
 (if (consp generic-type-definition)
     (let* ((type-args (rest generic-type-definition))
            (args (length type-args))
            (resolved-type-args
             (mapcar #'resolve-generic-type type-args))
            (main-type-name
             (format nil "~a`~d" (first generic-type-definition) args))
            (main-type-resolved (resolve-type-name main-type-name))
            ;; The comma separates the full
            ;; type name of the main type from the assembly-name,
            ;; we need to add the parameter-type in the middle
            ;; in square parenthesis before the assembly..
            (comma (position #\, main-type-resolved))
            (pre-type-result
             (when comma (subseq main-type-resolved 0 comma)))
            (post-type-result
             (when comma
               (subseq main-type-resolved comma
                       (length main-type-resolved)))))
       (if comma
           (format nil "~a[~{[~a]~^,~}]~a"
                   pre-type-result
                   resolved-type-args
                   post-type-result)
         (format nil "~a[~{[~a]~^,~}]"
                 main-type-resolved
                 resolved-type-args)))
   (resolve-type-name generic-type-definition)))



More information about the rdnzl-devel mailing list