kumard@sunybcs (Deepak Kumar) (09/15/87)
We have been doing major conversion of our Franz software to Common. We have a list of some common functions that need to be changed. Also, be careful about the scoping (Franz has dynamic scoping where as Common has static. However, by using the SPECIAL declaration, one can have dynamic scoping in Common. How fast you will be able to convert depends on how good your Franz code is. If your code uses subtle Franz bindings/ lexpers/ dynamic variables/ closure, it will be a big task. Because of these difficulties it is very hard to write a conversion program to automate the translation. However, if the programs are large, it is a good idea to write small tools like one that prints a calling tree of the Franz program, to detect any dynamic variable refs. Good Luck. Here's some conversions that we have managed to track: probelm : setsyntax problem : errset problem : signal <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> Franz-lisp Common-lisp ---------- ----------- (add1 a) (+ a 1) (ascii u) (int-char u) (assoc a b) (assoc a b :test #'equal) (assq a b) (assoc a b :test #'eq) (concat a b) (intern (concatenate 'string (prin1-to-string a) (prin1-to-string b))) (drain) (finish-output) (dtpr u) (consp u) (error 'error text') (error "error-text") (filepos u) (file-position u) (getd u) (symbol-function u) (lineread u) (read-line u nil nil) (makereadtable nil) (copy-readtable) (mapc '(lambda ...)) (mapc #'(lambda...)) (member a b) (member a b :test #'equal) (memq a b) (member a b :test #'eq) (msg ...) (princ (format nil ...)) (nthelem n s) (nth (- n 1) s) (openfile 'filename 'r) (open 'filename :direction :input) (patom u) (princ u) piport *standard-input* poport *standard-output* (plist a) (symbol-plist a) (princ u) (princ u) t (Princ u) (princ u)(terpri) t <=> (|myPrinc| u) (print u) (prin1 u) nil (Print u) (prin1 u)(terpri) nil <=> (|myPrint| u) (probef u) (probe-file u) $prpr pprint (ptime) (list (get-internal-run-time) (get-gc-run-time)) (putd 'cubed '(lambda (x) (setf (symbol-function 'cubed) (times x x x))) '(lambda (x) (* x x x))) (putprop a b c) (setf (get a b) c) (read u) (read u nil nil) (readc u) (read-char u) (readlist <list> ) (read-from-string <string> ) (setplist a b) (setf (symbol-plist a) b) (tyipeek u) (peek-char nil u nil -1) (uconcat a b) (make-symbol (concatenate 'string (prin1-to-string a) (prin1-to-string b))) -- kumard@gort.cs.buffalo.EDU kumard@sunybcs.BITNET kumard@sunybcs.UUCP Deepak Kumar, Dept. of CS, 226 Bell Hall, SUNY@Buffalo, NY 14260. kumard@gort.cs.buffalo.EDU kumard@sunybcs.BITNET kumard@sunybcs.UUCP Deepak Kumar, Dept. of CS, 226 Bell Hall, SUNY@Buffalo, NY 14260.