Annotation of 43BSDReno/pgrm/lisp/pearl/franz.l, revision 1.1

1.1     ! root        1: ;;;;;;;;;;;;;;;;;;;;;;;;;;;; franz.l ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        !             2: ;  Franz-dependent PEARL functions, declarations, and initializations
        !             3: ;      that don't use PEARL functions.
        !             4: ;  Functions to make Franz accept UCI Lisp functions are in ucisubset.l
        !             5: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        !             6: ; Copyright (c) 1983 ,  The Regents of the University of California.
        !             7: ; All rights reserved.  
        !             8: ; Authors: Joseph Faletti and Michael Deering.
        !             9: 
        !            10: ; Version numbers, major and minor.
        !            11: (defvar pearlmajorversion 3)
        !            12: (defvar pearlminorversion 9)
        !            13: ;3.1: Use of lets and other speedups and new slot encoding.
        !            14: ;3.2: Slot encoding applied to speeded-up match.
        !            15: ;3.3: New faster hashing.
        !            16: ;3.4: Type tags added to symbols, instances, definitions and databases.
        !            17: ;3.5: New print functions.
        !            18: ;3.6: Made hooks additive and fixed global variables in failed matches.
        !            19: ;3.7: Minor bug fixes in scopy and hooks.
        !            20: ;3.8: Unification added; minor bug fixes in setv and create.
        !            21: ;3.9: Bug fixes in blocks and freezing; selectq becomes selectq*.
        !            22: 
        !            23: ; db:
        !            24: (declare (*fexpr builddb))
        !            25: (defvar *pearldb*)
        !            26: (defvar *pearlinactivedb*)
        !            27: (defvar db)
        !            28: (defvar *db1size*)
        !            29: (defvar *db2size*)
        !            30: 
        !            31: (defvar *availablesizes* '((-1. . 1.) (0. . 1.) (1. . 1.) (2. . 3.)
        !            32:                           (3. . 7.) (4. . 13.) (5. . 29.) (6. . 61.)
        !            33:                           (7. . 127.) (8. . 127.) (9. . 127.)
        !            34:                           (10. . 127.) (11. . 127.)
        !            35:                           (12. . 127.) (13. . 127.)))
        !            36: ;((
        !            37: ; For UCI Lisp or Franz    (7. . 127.) (8. . 251.) (9. . 509.)
        !            38: ;   with vectors (soon?).  (10. . 1021.) (11. . 2039.)
        !            39: ;                         (12. . 4093.) (13. . 8191.)))
        !            40: ; (setq buildpplst nil)
        !            41: 
        !            42: (defvar *maindb*)
        !            43: (defvar *db*)
        !            44: (defvar *activedbnames* nil)
        !            45: 
        !            46: ; vars:
        !            47: (declare (*fexpr varvalue setv *var* *global* global unbind))
        !            48: (declare (*fexpr block endblock endanyblocks setblock))
        !            49: 
        !            50: ; hook:
        !            51: (defvar *runallslothooks* t)
        !            52: (defvar *runallbasehooks* t)
        !            53: 
        !            54: (defvar *runputpathhooks* t)
        !            55: (defvar *runclearpathhooks* t)
        !            56: (defvar *runaddsetpathhooks* t)
        !            57: (defvar *rundelsetpathhooks* t)
        !            58: (defvar *runaddpredpathhooks* t)
        !            59: (defvar *rundelpredpathhooks* t)
        !            60: (defvar *rungetpathhooks* t)
        !            61: (defvar *rungetpredpathhooks* t)
        !            62: (defvar *rungethookpathhooks* t)
        !            63: (defvar *runapplypathhooks* t)
        !            64: 
        !            65: (defvar *runmatchhooks* t)
        !            66: (defvar *runsmergehooks* t)
        !            67: (defvar *runindividualhooks* t)
        !            68: (defvar *runexpandedhooks* t)
        !            69: (defvar *runpatternhooks* t)
        !            70: (defvar *runnextitemhooks* t)
        !            71: (defvar *runfetchhooks* t)
        !            72: (defvar *runinsertdbhooks* t)
        !            73: (defvar *runremovedbhooks* t)
        !            74: (defvar *runindbhooks* t)
        !            75: (defvar *runnextequalhooks* t)
        !            76: (defvar *runstrequalhooks* t)
        !            77: 
        !            78: ; symord and create and scopy (and all):
        !            79: (defvar *pearlunbound*)
        !            80: (defvar *equivclass*)
        !            81: (defvar *invisible*)
        !            82: (defvar *warn* t)
        !            83: 
        !            84: (defvar *pearlsymbol*)
        !            85: (defvar *pearldef*)
        !            86: (defvar *pearlinst*)
        !            87: 
        !            88: (declare (*fexpr pearlbreak symbol ordinal create cr insidecreate))
        !            89: (defvar nilstruct)
        !            90: (defvar d:nilstruct)
        !            91: (defvar i:nilstruct)
        !            92: (defvar s:nilsym)
        !            93: (defvar *lastcreated*)
        !            94: (defvar *toplevelp*)
        !            95: (defvar *currenttopcreated*)
        !            96: (defvar *currenttopalists*)
        !            97: (defvar *currenttopcopy*)
        !            98: (defvar *currentcreatetype*)
        !            99: (defvar *ordinalnames* nil)
        !           100: (defvar *globallist* nil)
        !           101: ; So that unique numbers start at 0.
        !           102: (defvar *lastsymbolnum* -1)
        !           103: (defvar *unhashablevalues*)
        !           104: (defvar *any*conscell*)
        !           105: (defvar *blockstack* nil)
        !           106: (defvar *zero-ordinal-value* 0)
        !           107: (defvar *currentpearlstructure* nil)
        !           108: (defvar *currentstructure* nil)
        !           109: (defvar *scopieditems*)
        !           110: 
        !           111: ; path:
        !           112: (defvar *pathtop*)
        !           113: (defvar *pathlocal*)
        !           114: 
        !           115: ; print:
        !           116: (declare (*fexpr foreach quiet))
        !           117: (defvar *fullprint* nil)
        !           118: (defvar *abbrevprint* nil)
        !           119: (defvar *uniqueprint* nil)
        !           120: (defvar *uniqueprintlist* nil)
        !           121: (defvar *streamprintlength* 2)
        !           122: (defvar *quiet* nil)
        !           123: (defvar prinlevel)
        !           124: (setq prinlevel 7)
        !           125: (defvar printvar)
        !           126: (defvar pearltraceprintfn)
        !           127: (defvar pearlshowstackprintfn)
        !           128: (defvar pearlbreakprintfn)
        !           129: (defvar pearlfixprintfn)
        !           130: (defvar msgprintfn)
        !           131: (defvar pearltracebreakprintfn)
        !           132: (defvar pearlprintfn)
        !           133: (defvar dskprintfn)
        !           134: (defvar trace-printer)
        !           135: (setq trace-printer 'pearltraceprintfn)
        !           136: (defvar showstack-printer)
        !           137: (setq showstack-printer 'pearlshowstackprintfn)
        !           138: (defvar top-level-print)
        !           139: (setq top-level-print 'pearltracebreakprintfn)
        !           140: 
        !           141: ; if t, then enters and exits to tracing are quiet,
        !           142: ;   but info is still kept so (tracedump) will work
        !           143: (defvar \$tracemute)
        !           144: 
        !           145: ; hash:
        !           146: (defvar *stream*)
        !           147: (defvar *stream:*)
        !           148: (defvar *function-stream:*)
        !           149: (defvar *slotvalues* (makhunk 64))
        !           150: (defvar *hashingmarks* (makhunk 64))
        !           151: ; (and via lowlevel.l):
        !           152: (defvar *multiproducts* '(16. 256. 4096. 65536. 1048576. 16777216.
        !           153:                              268435456. 42944967296.))
        !           154: 
        !           155: ; match:
        !           156: (defvar *matchunboundsresult* nil)
        !           157: (defvar *globalsavestack* nil)
        !           158: (defvar *equivsavestack* nil)
        !           159: (defvar *unifyunbounds* nil)
        !           160: (defvar xvar)
        !           161: (defvar yvar)
        !           162: 
        !           163: ; history:
        !           164: (defvar *historynumber* -1.)
        !           165: (defvar *historysize* 64.)
        !           166: (defvar *usealiases* t)
        !           167: (defvar *history* (makhunk *historysize*))
        !           168: (defvar *histval* (makhunk *historysize*))
        !           169: (defvar *printhistorynumber* nil)
        !           170: (defvar *readlinechanged*)
        !           171: 
        !           172: ; PEARL-top-level:
        !           173: (defvar *firststartup* t)
        !           174: (defvar *pearlprompt* '|pearl> |)
        !           175: (declare (*fexpr savepearl))
        !           176: 
        !           177: ; Franz: PEARL-top-level:
        !           178: (defvar pearl-title (concat " plus PEARL "
        !           179:                            pearlmajorversion "."
        !           180:                            pearlminorversion))
        !           181: (defvar franz-not-virgin)
        !           182: (defvar pearl-top-level-init)
        !           183: (defvar top-level)
        !           184: (defvar franz-minor-version-number)
        !           185: (defvar franz-top-level)
        !           186: (defvar +)
        !           187: (defvar ++)
        !           188: (defvar +++)
        !           189: (defvar *)
        !           190: (defvar **)
        !           191: (defvar ***)
        !           192: (defvar ER%tpl)
        !           193: (defvar ER%brk)
        !           194: (defvar ER%err)
        !           195: (defvar evalhook)
        !           196: (defvar \$gcprint)
        !           197: (defvar funcallhook)
        !           198: (defvar tpl-errlist)
        !           199: (defvar user-top-level)
        !           200: (defvar top-level-eof)
        !           201: 
        !           202: ; PEARL-break-err-handler or trace or fixit debugger:
        !           203: (defvar break-level-count)
        !           204: (defvar debug-level-count)
        !           205: (defvar errlist)
        !           206: 
        !           207: ; (funl (x...) body) expands to (function (lambda (x...) body)).
        !           208: (defmacro funl (&rest rest)
        !           209:   `(function (lambda .,rest)))
        !           210: 
        !           211: ; Various Lisps store functions different ways.  Check for
        !           212: ;    lambda-ness (expr-ness).
        !           213: (de islambda (fcn)
        !           214:   (and (neq 'binary (type fcn))
        !           215:        (setq fcn (getd fcn)))
        !           216:   (or (and (eq 'binary (type fcn))
        !           217:           (eq 'lambda (getdisc fcn)))
        !           218:       (and (dtpr fcn)
        !           219:           (eq 'lambda (car fcn)))))
        !           220: 
        !           221: ; Tests for an actual literal atom rather than nil!!
        !           222: (defmacro reallitatom (potatom)
        !           223:   `(let ((pot ,potatom))
        !           224:        (and (symbolp pot)
        !           225:             pot)))
        !           226:  
        !           227: ; To avoid problems with UCI Lisp's unbound, we use a special value
        !           228: ;   for PEARL (pattern-matching) variables to indicate unboundness.
        !           229: (dm punbound (none)
        !           230:   ''*pearlunbound*)
        !           231: 
        !           232: (defmacro pboundp (a)
        !           233:   `(neq ,a (punbound)))
        !           234: 
        !           235: (defmacro punboundatomp (yyy)
        !           236:   `(eq ,yyy (punbound)))
        !           237: 
        !           238: ;(aliasdef 'To 'From 'Property) means define To to be the same as From
        !           239: ;   (under Property in UCILisp).  HOWEVER, in Franz it means copy the
        !           240: ;   function definition of To to From and ignore Property.
        !           241: (defmacro aliasdef (to from property)
        !           242:   `(putd ,to (getd ,from)))
        !           243: 
        !           244: ; vi: set lisp:

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.