|
|
1.1 ! root 1: (setq rcs-cmufncs- ! 2: "$Header: /usr/lib/lisp/cmufncs.l,v 1.1 83/01/29 18:34:20 jkf Exp $") ! 3: ! 4: (eval-when (compile eval) (load 'cmumacs)) ! 5: ! 6: (declare (special filelst %changes $%dotflg %prevfn% %%cfn part %%l ! 7: lastword %trcflg form fn)) ! 8: (def tab (lexpr (n) ! 9: (prog (nn prt) (setq nn (arg 1)) ! 10: (cond ((> n 1)(setq prt (arg 2)))) ! 11: (cond ((> (nwritn prt) nn) (terpri prt))) ! 12: (printblanks (- nn (nwritn prt)) prt)))) ! 13: ! 14: ! 15: (dv $%dotflg nil) ! 16: (def %lineread ! 17: (lambda ! 18: (chan) ! 19: (prog (ans) ! 20: loop (setq ans (cons (read chan 'EOF) ans)) ! 21: (cond ((eq (car ans) 'EOF) (return (reverse (cdr ans))))) ! 22: loop2(cond ((eq 10 (tyipeek chan)) (return (reverse ans))) ! 23: ((memq (tyipeek chan) '(41 93)) ! 24: (tyi chan) ! 25: (go loop2)) ! 26: (t (go loop)))))) ! 27: ! 28: ! 29: (dv %prevfn% " ") ! 30: (dv %trcflg t) ! 31: ! 32: (def attach ! 33: (lambda ! 34: (x y) ! 35: (cond ((dtpr y) (rplacd y (cons (car y) (cdr y))) (rplaca y x)) ! 36: (t (eprint y) (error '"IS AN ATOM, CAN'T BE ATTACHED TO"))))) ! 37: ! 38: (dv %changes ()) ! 39: ! 40: (def dremove ! 41: (lambda (x l) ! 42: (cond ((atom l) nil) ! 43: ((eq x (car l)) ! 44: (cond ((cdr l) ! 45: (rplaca l (cadr l)) ! 46: (rplacd l (cddr l)) ! 47: (dremove x l)))) ! 48: (t (prog (z) ! 49: (setq z l) ! 50: lp (cond ((atom (cdr l)) (return z)) ! 51: ((eq x (cadr l)) (rplacd l (cddr l))) ! 52: (t (setq l (cdr l)))) ! 53: (go lp)))))) ! 54: (def dreverse ! 55: (lambda (l) ! 56: (prog (l1 y z) ! 57: (setq l1 l) ! 58: l1 (cond ! 59: ((atom (setq y l)) ! 60: (cond ((or (null z) (null (cdr z))) (return z)) ! 61: ((null (cddr z)) ! 62: (setq y (car l1)) ! 63: (rplaca l1 (car z)) ! 64: (rplaca z y) ! 65: (rplacd l1 z) ! 66: (rplacd z nil) ! 67: (return l1)) ! 68: (t (rplacd (Cnth z (sub1 (length z))) z) ! 69: (setq y (car l1)) ! 70: (rplaca l1 (car z)) ! 71: (rplaca z y) ! 72: (rplacd l1 (cdr z)) ! 73: (rplacd z nil) ! 74: (return l1))))) ! 75: (setq l (cdr l)) ! 76: (setq z (rplacd y z)) ! 77: (go l1)))) ! 78: ! 79: (def dsubst ! 80: (lambda (x y z) ! 81: (prog (b) ! 82: (cond ((eq y (setq b z)) (return (copy x)))) ! 83: lp (cond ((atom z) (return b)) ! 84: ((cond ((symbolp y) (eq y (car z))) (t (equal y (car z)))) ! 85: (rplaca z (copy x))) ! 86: (t (dsubst x y (car z)))) ! 87: (cond ((and y (eq y (cdr z))) (rplacd z (copy x)) (return b))) ! 88: (setq z (cdr z)) ! 89: (go lp)))) ! 90: ! 91: (putd 'eqstr (getd 'equal)) ! 92: ! 93: ; where are the functions this calls?? ! 94: (def every ! 95: (lambda ! 96: (everyx everyfn1 everyfn2) ! 97: (prog nil ! 98: a (cond ((null everyx) (return t)) ! 99: ((funcall everyfn1 (car everyx)) ! 100: (setq everyx ! 101: (cond ((null everyfn2) (cdr everyx)) ! 102: (t (funcall everyfn2 everyx)))) ! 103: (go a)) ! 104: (t (return nil)))))) ! 105: (def insert ! 106: (lambda ! 107: (x l comparefn nodups) ! 108: (cond ((null l) (list x)) ! 109: ((atom l) ! 110: (eprint l) ! 111: (error '"is an atom, can't be inserted into")) ! 112: (t (cond ! 113: ((null comparefn) (setq comparefn (function alphalessp)))) ! 114: (prog (l1 n n1 y) ! 115: (setq l1 l) ! 116: (setq n (length l)) ! 117: a (setq n1 (*quo (add1 n) 2)) ! 118: (setq y (Cnth l1 n1)) ! 119: (cond ((< n 3) ! 120: (cond ((funcall comparefn x (car y)) ! 121: (cond ! 122: ((not ! 123: (and nodups (equal x (car y)))) ! 124: (rplacd y (cons (car y) (cdr y))) ! 125: (rplaca y x)))) ! 126: ((eq n 1) (rplacd y (cons x (cdr y)))) ! 127: ((funcall comparefn x (cadr y)) ! 128: (cond ! 129: ((not ! 130: (and nodups (equal x (cadr y)))) ! 131: (rplacd (cdr y) ! 132: (cons (cadr y) (cddr y))) ! 133: (rplaca (cdr y) x)))) ! 134: (t (rplacd (cdr y) (cons x (cddr y)))))) ! 135: ((funcall comparefn x (car y)) ! 136: (cond ! 137: ((not (and nodups (equal x (car y)))) ! 138: (setq n (sub1 n1)) ! 139: (go a)))) ! 140: (t (setq l1 (cdr y)) (setq n (- n n1)) (go a)))) ! 141: l)))) ! 142: ! 143: (def kwote (lambda (x) (list 'quote x))) ! 144: ! 145: (def lconc ! 146: (lambda ! 147: (ptr x) ! 148: (prog (xx) ! 149: (return ! 150: (cond ((atom x) ptr) ! 151: (t (setq xx (last x)) ! 152: (cond ((atom ptr) (cons x xx)) ! 153: ((dtpr (cdr ptr)) ! 154: (rplacd (cdr ptr) x) ! 155: (rplacd ptr xx)) ! 156: (t (rplaca (rplacd ptr xx) x))))))))) ! 157: ! 158: (def ldiff ! 159: (lambda ! 160: (x y) ! 161: (cond ((eq x y) nil) ! 162: ((null y) x) ! 163: (t ! 164: (prog (v z) ! 165: (setq z (setq v (ncons (car x)))) ! 166: loop (setq x (cdr x)) ! 167: (cond ((eq x y) (return z)) ! 168: ((null x) (error '"NOT A TAIL - LDIFF"))) ! 169: (setq v (cdr (rplacd v (ncons (car x))))) ! 170: (go loop)))))) ! 171: ! 172: ! 173: (def lsubst ! 174: (lambda ! 175: (x y z) ! 176: (cond ((null z) nil) ! 177: ((atom z) (cond ((eq y z) x) (t z))) ! 178: ((equal y (car z)) (nconc (copy x) (lsubst x y (cdr z)))) ! 179: (t (cons (lsubst x y (car z)) (lsubst x y (cdr z))))))) ! 180: ! 181: (def memcdr ! 182: (lambda ! 183: (%x% %y%) ! 184: (prog nil ! 185: l1 (cond ((eq %x% (cdr %y%)) (return t)) ! 186: ((eq %x% %y%) (return nil))) ! 187: (setq %x% (cdr %x%)) ! 188: (go l1)))) ! 189: ! 190: (def merge ! 191: (lambda ! 192: (a b %%cfn) ! 193: (cond ((null %%cfn) (setq %%cfn (function alphalessp)))) ! 194: (merge1 a b))) ! 195: ! 196: (def merge1 ! 197: (lambda ! 198: (a b) ! 199: (cond ((null a) b) ! 200: ((null b) a) ! 201: (t ! 202: (prog (val end) ! 203: (setq val ! 204: (setq end ! 205: (cond ((funcall %%cfn (car a) (car b)) ! 206: (prog1 a (setq a (cdr a)))) ! 207: (t (prog1 b (setq b (cdr b))))))) ! 208: loop (cond ((null a) (rplacd end b) (return val)) ! 209: ((null b) (rplacd end a) (return val)) ! 210: ((funcall %%cfn (car a) (car b)) ! 211: (rplacd end a) ! 212: (setq a (cdr a))) ! 213: (t (rplacd end b) (setq b (cdr b)))) ! 214: (setq end (cdr end)) ! 215: (go loop)))))) ! 216: ! 217: (def notany ! 218: (lambda (somex somefn1 somefn2) (not (some somex somefn1 somefn2)))) ! 219: ! 220: (def notevery ! 221: (lambda ! 222: (everyx everyfn1 everyfn2) ! 223: (not (every everyx everyfn1 everyfn2)))) ! 224: ! 225: (def Cnth ! 226: (lambda ! 227: (x n) ! 228: (cond ((> 1 n) (cons nil x)) ! 229: (t ! 230: (prog nil ! 231: lp (cond ((or (atom x) (eq n 1)) (return x))) ! 232: (setq x (cdr x)) ! 233: (setq n (sub1 n)) ! 234: (go lp)))))) ! 235: ! 236: (def nthchar ! 237: (lambda ! 238: (x n) ! 239: (cond ((plusp n) (car (Cnth (explodec x) n))) ! 240: ((minusp n) (car (Cnth (reverse (explodec x)) (minus n)))) ! 241: ((zerop n) nil)))) ! 242: ! 243: (def prinlev ! 244: (lambda ! 245: ($%x $%n) ! 246: (cond ((not (dtpr $%x)) (print $%x)) ! 247: ((and %trcflg (eq (car $%x) 'evl-trace) (dtpr (cdr $%x))) ! 248: (prinlev (cadr $%x) $%n)) ! 249: ((and %trcflg ! 250: (eq (car $%x) '\#) ! 251: (dtpr (cdr $%x)) ! 252: (dtpr (cddr $%x))) ! 253: (prinlev (caddr $%x) $%n)) ! 254: ((eq %prevfn% $%x) (princ '//\#//)) ! 255: ((eq $%n 0) (princ '"& ")) ! 256: (t ! 257: (prog ($%kk $%cl) ! 258: (princ ! 259: (cond ($%dotflg (setq $%dotflg nil) '"... ") ! 260: (t '"("))) ! 261: (prinlev (car $%x) (sub1 $%n)) ! 262: (setq $%kk $%x) ! 263: lp (cond ! 264: ((memcdr $%x $%kk) ! 265: (cond ($%cl (princ '" ...]") (return nil)) ! 266: (t (setq $%cl t))))) ! 267: (cond ((not (*** eq (cdr $%kk) (unbound))) ! 268: (setq $%kk (cdr $%kk))) ! 269: (t (princ '" . unbound)") (return nil))) ! 270: (cond ((null $%kk) (princ '")") (return nil)) ! 271: ((atom $%kk) ! 272: (princ '" . ") ! 273: (patom $%kk) ! 274: (princ '")") ! 275: (return nil))) ! 276: (princ '" ") ! 277: (prinlev (car $%kk) (sub1 $%n)) ! 278: (go lp)))))) ! 279: ! 280: (def printlev (lambda ($%x $%n) (terpri) (prinlev $%x $%n) $%x)) ! 281: ! 282: ! 283: ! 284: (def remove ! 285: (lambda ! 286: (elt list) ! 287: (cond ((atom list) list) ! 288: ((equal (car list) elt) (remove elt (cdr list))) ! 289: ((cons (car list) (remove elt (cdr list))))))) ! 290: ! 291: (def some ! 292: (lambda ! 293: (somex somefn1 somefn2) ! 294: (prog nil ! 295: a (cond ((null somex) (return nil)) ! 296: ((funcall somefn1 (car somex)) (return somex)) ! 297: (t (setq somex ! 298: (cond ((null somefn2) (cdr somex)) ! 299: (t (funcall somefn2 somex)))) ! 300: (go a)))))) ! 301: ! 302: ; this probably should have another names since is **** ! 303: ; just a duplication of an existing function and since it has a ! 304: ; default second arg which I believe is not documented. ! 305: (def sort ! 306: (lambda ! 307: (%%l %%cfn) ! 308: (prog (val n) ! 309: (cond ((null %%cfn) (setq %%cfn (function alphalessp)))) ! 310: (setq n 0) ! 311: (setq val (sort1 0)) ! 312: loop (cond ((null %%l) (return val)) ! 313: (t (setq val (merge1 val (sort1 n))) ! 314: (setq n (add1 n)) ! 315: (go loop)))))) ! 316: ! 317: (def sort1 ! 318: (lambda ! 319: (n) ! 320: (cond ((null %%l) nil) ! 321: ((zerop n) ! 322: (prog (run end) ! 323: (setq run %%l) ! 324: loop (setq end %%l) ! 325: (setq %%l (cdr %%l)) ! 326: (cond ((or (null %%l) ! 327: (not (funcall %%cfn (car end) (car %%l)))) ! 328: (rplacd end nil) ! 329: (return run)) ! 330: (t (go loop))))) ! 331: (t (merge1 (sort1 (sub1 n)) (sort1 (sub1 n))))))) ! 332: ! 333: (def subpair ! 334: (lambda ! 335: (old new expr) ! 336: (cond (old (subpr expr old (or new '(nil)))) (t expr)))) ! 337: ! 338: (def subpr ! 339: (lambda ! 340: (expr l1 l2) ! 341: (prog (d a) ! 342: (cond ((atom expr) (go lp)) ! 343: ((setq d (cdr expr)) (setq d (subpr d l1 l2)))) ! 344: (setq a (subpr (car expr) l1 l2)) ! 345: (return ! 346: (cond ((or (neq a (car expr)) (neq d (cdr expr))) (cons a d)) ! 347: (t expr))) ! 348: lp (cond ((null l1) (return expr)) ! 349: (l2 (cond ((eq expr (car l1)) (return (car l2))))) ! 350: (t (cond ((eq expr (caar l1)) (return (cdar l1)))))) ! 351: (setq l1 (cdr l1)) ! 352: (and l2 (setq l2 (or (cdr l2) '(nil)))) ! 353: (go lp)))) ! 354: ! 355: (def tailp ! 356: (lambda ! 357: (x y) ! 358: (and x ! 359: (prog nil ! 360: lp (cond ((atom y) (return nil)) ((eq x y) (return x))) ! 361: (setq y (cdr y)) ! 362: (go lp))))) ! 363: ! 364: (def tconc ! 365: (lambda ! 366: (p x) ! 367: (cond ((atom p) (cons (setq x (ncons x)) x)) ! 368: ((dtpr (cdr p)) (rplacd p (cdr (rplacd (cdr p) (ncons x))))) ! 369: (t (rplaca p (cdr (rplacd p (ncons x)))))))) ! 370: ! 371: (def ttyesno (lambda nil (yesno (read)))) ! 372: ! 373: (def yesno (lambda (x) (selectq x ((t y yes) t) ((nil n no) nil) x))) ! 374: ! 375: ; this really duplicates a function in auxfns1.l but this does more ! 376: ; error checking. ! 377: (defun nth (N L) ! 378: (cond ((null L)nil) ! 379: (t(do ((LCDR L (cdr LCDR)) ! 380: (COUNT N (1- COUNT))) ! 381: ((or (and (atom LCDR) LCDR ! 382: (err '"non-proper list passed to nth")) ! 383: (or (lessp COUNT 0)(zerop COUNT))) ! 384: (car LCDR)) ! 385: nil)))) ! 386: (declare (special piport)) ! 387: (def dc-dskin ; LWE Hacking to compile OK ! 388: (nlambda (args) ! 389: (prog (tmp tmp1 tmp2) ! 390: (setq tmp ! 391: (prog (c cc) ! 392: (setq cc (get (car args) 'comment)) ! 393: loop ! 394: (cond ((not cc)(return nil))) ! 395: (setq c (car cc)) ! 396: (cond ((eq (car c)(cadr args)) ! 397: (return nil))) ! 398: (setq cc (cdr cc)) ! 399: (go loop))) ! 400: (setq tmp2 piport) ! 401: (setq tmp1 (get-comment 27 tmp2)) ! 402: (cond (tmp (disgusting tmp ! 403: (cons (cadr args) ! 404: (cons (caddr args) tmp1)))) ! 405: (t (putprop (car args) ! 406: (cons (cons (cadr args) ! 407: (cons (caddr args) tmp1)) ! 408: (get (car args) 'comment)) ! 409: 'comment))) ! 410: (mark!changed (car args)) ! 411: (return nil)))) ! 412: ! 413: (def disgusting (lambda (a b) ; (rplaca a b))) ! 414: b)) ! 415: ! 416: (def get-comment ! 417: (lambda (stopper piport) ! 418: (prog (ans line) ! 419: (cond ((eq 10 (tyipeek piport)) (tyi piport))) ! 420: l: (setq line nil) ! 421: ; (until (member (car line) (list 10 stopper)) ! 422: ; (setq line (cons (tyi piport) line))) ! 423: (prog nil loop ! 424: (cond ((member (car line)(list 10 stopper)) ! 425: (return nil))) ! 426: (setq line (cons (tyi piport) line)) ! 427: (go loop)) ! 428: (setq ans (cons (implode (dreverse (cdr line))) ans)) ! 429: (cond ((eq (car line) 10) (go l:)) (t (return (dreverse ans)))))))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.