home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / edit / !lEdit / l / support < prev    next >
Text File  |  1995-01-19  |  1KB  |  55 lines

  1. ;;;                  ***  lEdit - Lisp Editor  ***
  2. ;;;                       (c) 1995 Urs Bisang
  3. ;;;                           Version 0.1  
  4. ;;;
  5. ;;;   dieses file enthaelt low-level support routinen fuer lEdit
  6. ;;;
  7.  
  8.       
  9.  
  10. ;; ** globale variablen **
  11. (define *gensym-counter* 0)               
  12.  
  13. ;; routine zur ausgabe von fatalen 'internal errors' 
  14. (define-syntax ierr (:rest x)
  15.   (eval `(werr 1 "*internal error* " (string-concat ,@x))))
  16.  
  17.  
  18. ;; inkrementiere eine variable
  19. (define-syntax inc! (x)
  20.   (set-eval! x (+ (eval x) 1)))
  21.  
  22. ;; dekrementiere eine variable
  23. (define-syntax dec! (x)
  24.   (set-eval! x (- (eval x) 1)))
  25.  
  26.  
  27. ;; generiere ein einmaliges eindeutiges symbol
  28. (define (gensym)
  29.   (string->symbol (string-concat "#:sym" (inc! *gensym-counter*))))
  30.  
  31.  
  32. ;; erstes element einer liste
  33. (define (first l) (car l))
  34.  
  35. ;; zweites element einer liste 
  36. (define (second l) (car (cdr l)))
  37.  
  38. ;; drittes element einer liste 
  39. (define (third l) (car (cdr (cdr l))))
  40.  
  41. ;; entferne alle elemente elt aus einer liste
  42. (define (list-remove l elt)
  43.   (let ((l1 nil))
  44.     (while l
  45.       (if (not (equal? (car l) elt))
  46.           (set! l1 (append l1 (car l)))) 
  47.       (set! l (cdr l)))
  48.     l1))
  49.  
  50.  
  51.   
  52.   
  53.  
  54.  
  55.