Hi Camm, Is it possible that the "iteration" in the GCL compiler that you mentioned, may not terminate (i.e. falling into infinite loops) for certain inputs?
The attached Lisp code is the very beginning part of AXIOM's "tangle" utility for extracting code from LaTeX files. In my machine, GCL 2.7.0 compiler seems take forever to compile the (only) Lisp function in it. My guess is that, in the function, many other Lisp functions are referenced, but these functions are to be defined at later position of the code, and thus their type information is unknown. GCL 2.6.x can compile this file any way, but the current GCL 2.7.0 compiler seems failing into infinite loops. Regards, Chun TIAN On 05/02/24 02:27, Camm Maguire wrote: > Greetings! Over the years, various theoretical papers on algorithms for > Common Lisp utilities have been very helpful in GCL development, > e.g. Baker's paper on the type system. > > I am looking for a reference on compiler design algorithms which handle > type inferencing most efficiently. Right now we iterate on conflict, > and I think this is too slow. Pointers most appreciated! > > Take care, >
(defvar *chunkhash* nil "this hash table contains the chunks found") (defvar *chunknoise* nil "turn this on to debug internals") (defun tangle (filename topchunk &optional file) "Extract the source code from a pamphlet file" (let ((noweb? (char= (schar topchunk 0) #\<))) (setq *chunkhash* (make-hash-table :test #'equal)) (when *chunknoise* (format t "PASS 1~%")) (gcl-hashchunks (gcl-read-file filename) noweb?) (when *chunknoise* (format t "PASS 2~%")) (if (and file (stringp file)) (with-open-file (out file :direction :output) (gcl-expand topchunk noweb? out)) (gcl-expand topchunk noweb? t))) (values))
signature.asc
Description: OpenPGP digital signature