;;; hashs
-(defun print-hash (h &optional (stream *standard-output*))
- (maphash #'(lambda (k v) (format stream "~S -> ~S~%" k v)) h)
+(defun print-hash (h &key (stream *standard-output*)
+ key-transform-fn value-transform-fn
+ (prefix "") (divider " -> ") (terminator "~%"))
+ (maphash #'(lambda (k v)
+ (format stream "~A~S~A~S"
+ prefix
+ (if key-transform-fn
+ (funcall key-transform-fn k)
+ k)
+ divider
+ (if value-transform-fn
+ (funcall value-transform-fn v)
+ v))
+ (when terminator (format stream terminator)))
+ h)
h)
+