(uiop:define-package :binry-hop/debug-util
(:use :cl)
(:export #:io-open #:io-close #:mv-ssf #:cat)
(:nicknames :debug-util))
(in-package :binry-hop/debug-util)
(defun io-open (&key (path #p"tmp.data")
(direction :io) (if-exists :supersede)
(if-does-not-exist :create)
&allow-other-keys keys)
(apply 'open path
(append keys
(list :direction direction :if-exists if-exists
:if-does-not-exist if-does-not-exist))))
(defun io-close (stream)
(unwind-protect
(close stream)
(close stream :abort t)))
(defmacro mv-ssf (symbols form)
`(multiple-value-bind ,symbols ,form
(setf
,@(loop for s in symbols nconc
`((symbol-function ',s) ,s)))))
(defun cat (&optional (path #p"tmp.data"))
(with-open-file (in path)
(loop for read = (read-line in nil nil) while read do (print read))))