; edit files in a repl
(define-top-level-value '*editor* "ed")
(define-top-level-value '*edfile* #f)
(define (ed . args)
(if (pair? args) (set-top-level-value! '*edfile* (car args)))
(if (not (top-level-value '*edfile*)) (error 'ed "file not found"))
(system (string-append (top-level-value '*editor*) " " (top-level-value '*edfile*)))
(load (top-level-value '*edfile*)))
OyBlZGl0IGZpbGVzIGluIGEgcmVwbAoKCihkZWZpbmUtdG9wLWxldmVsLXZhbHVlICcqZWRpdG9yKiAiZWQiKQooZGVmaW5lLXRvcC1sZXZlbC12YWx1ZSAnKmVkZmlsZSogI2YpCgooZGVmaW5lIChlZCAuIGFyZ3MpCiAgKGlmIChwYWlyPyBhcmdzKSAoc2V0LXRvcC1sZXZlbC12YWx1ZSEgJyplZGZpbGUqIChjYXIgYXJncykpKQogIChpZiAobm90ICh0b3AtbGV2ZWwtdmFsdWUgJyplZGZpbGUqKSkgKGVycm9yICdlZCAiZmlsZSBub3QgZm91bmQiKSkKICAoc3lzdGVtIChzdHJpbmctYXBwZW5kICh0b3AtbGV2ZWwtdmFsdWUgJyplZGl0b3IqKSAiICIgKHRvcC1sZXZlbC12YWx1ZSAnKmVkZmlsZSopKSkKICAobG9hZCAodG9wLWxldmVsLXZhbHVlICcqZWRmaWxlKikpKQ==