breakpoint.scm


Das Programm beinhaltet die beiden Funktionen writeln und bkpt, die von vielen meiner Programme verwendet werden. Sie werden jeweils als library dazugeladen.

;;; <breakpoint.scm>
; Kann auch ohne Parameter aufgerufen werden und bietet die
; Möglichkeit, eine Funktion zu unterbrechen und ggf. Ausdrücke
; auszuwerten und anzuzeigen.
;;; vvvvv bkpt vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
(define
  bkpt
  (lambda
      Parameter
    (let
        loop
      ((l Parameter))
      (cond
        ((null? l) (newline))
        (else
         (display (car l))
         (display #/space)
         (loop (cdr l)))))
    (writeln "weiter mit             und   ")
    (writeln "Abbruch mit F[e]hler           und   ")
    (let
        loop
      ((ch (read-line)))
      (cond
        ((equal? ch "")(loop (read-line)))
        ((char=? (char-upcase (string-ref ch 0)) #/space) (void))
        ((char=? (char-upcase (string-ref ch 0)) #/E)
         (error "Abbruch mit Fehlermeldung"))
        (else
         (loop (read-line)))))))

;;; vvvvv writeln vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
; Kann auch ohne Parameter aufgerufen werden und bietet die
; Möglichkeit, eine Ausgabe von einer beliebigen Zahl von Parametern
; durchzuführen.
(define
  writeln
  (lambda
      L
    (cond
      ((null? L) (newline))
      (else
       (display (car L))
       (display #/space)
       (apply writeln (cdr L))))))
;;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^