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))))))
;;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^