--- a/vendor/quickutils.lisp Sat Nov 04 13:49:42 2017 -0400
+++ b/vendor/quickutils.lisp Sat Nov 04 13:49:49 2017 -0400
@@ -2,7 +2,7 @@
;;;; See http://quickutil.org for details.
;;;; To regenerate:
-;;;; (qtlc:save-utils-as "quickutils.lisp" :utilities '(:COMPOSE :CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH :ENSURE-LIST :N-GRAMS :ONCE-ONLY :RCURRY :READ-FILE-INTO-STRING :SYMB :WITH-GENSYMS :WRITE-STRING-INTO-FILE) :ensure-package T :package "MAGITEK.QUICKUTILS")
+;;;; (qtlc:save-utils-as "quickutils.lisp" :utilities '(:CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH :N-GRAMS :ONCE-ONLY :RCURRY :SYMB :WITH-GENSYMS) :ensure-package T :package "MAGITEK.QUICKUTILS")
(eval-when (:compile-toplevel :load-toplevel :execute)
(unless (find-package "MAGITEK.QUICKUTILS")
@@ -14,14 +14,10 @@
(when (boundp '*utilities*)
(setf *utilities* (union *utilities* '(:MAKE-GENSYM-LIST :ENSURE-FUNCTION
- :COMPOSE :CURRY :ENSURE-BOOLEAN
- :ENSURE-GETHASH :ENSURE-LIST :TAKE
- :N-GRAMS :ONCE-ONLY :RCURRY
- :WITH-OPEN-FILE* :WITH-INPUT-FROM-FILE
- :READ-FILE-INTO-STRING :MKSTR :SYMB
- :STRING-DESIGNATOR :WITH-GENSYMS
- :WITH-OUTPUT-TO-FILE
- :WRITE-STRING-INTO-FILE))))
+ :CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH
+ :TAKE :N-GRAMS :ONCE-ONLY :RCURRY
+ :MKSTR :SYMB :STRING-DESIGNATOR
+ :WITH-GENSYMS))))
(eval-when (:compile-toplevel :load-toplevel :execute)
(defun make-gensym-list (length &optional (x "G"))
"Returns a list of `length` gensyms, each generated as if with a call to `make-gensym`,
@@ -46,35 +42,6 @@
(fdefinition function-designator)))
) ; eval-when
- (defun compose (function &rest more-functions)
- "Returns a function composed of `function` and `more-functions` that applies its ;
-arguments to to each in turn, starting from the rightmost of `more-functions`,
-and then calling the next one with the primary value of the last."
- (declare (optimize (speed 3) (safety 1) (debug 1)))
- (reduce (lambda (f g)
- (let ((f (ensure-function f))
- (g (ensure-function g)))
- (lambda (&rest arguments)
- (declare (dynamic-extent arguments))
- (funcall f (apply g arguments)))))
- more-functions
- :initial-value function))
-
- (define-compiler-macro compose (function &rest more-functions)
- (labels ((compose-1 (funs)
- (if (cdr funs)
- `(funcall ,(car funs) ,(compose-1 (cdr funs)))
- `(apply ,(car funs) arguments))))
- (let* ((args (cons function more-functions))
- (funs (make-gensym-list (length args) "COMPOSE")))
- `(let ,(loop for f in funs for arg in args
- collect `(,f (ensure-function ,arg)))
- (declare (optimize (speed 3) (safety 1) (debug 1)))
- (lambda (&rest arguments)
- (declare (dynamic-extent arguments))
- ,(compose-1 funs))))))
-
-
(defun curry (function &rest arguments)
"Returns a function that applies `arguments` and the arguments
it is called with to `function`."
@@ -110,13 +77,6 @@
(values (setf (gethash ,key ,hash-table) ,default) nil))))
- (defun ensure-list (list)
- "If `list` is a list, it is returned. Otherwise returns the list designated by `list`."
- (if (listp list)
- list
- (list list)))
-
-
(defun take (n sequence)
"Take the first `n` elements from `sequence`."
(subseq sequence 0 n))
@@ -187,58 +147,6 @@
(multiple-value-call fn (values-list more) (values-list arguments)))))
- (defmacro with-open-file* ((stream filespec &key direction element-type
- if-exists if-does-not-exist external-format)
- &body body)
- "Just like `with-open-file`, but `nil` values in the keyword arguments mean to use
-the default value specified for `open`."
- (once-only (direction element-type if-exists if-does-not-exist external-format)
- `(with-open-stream
- (,stream (apply #'open ,filespec
- (append
- (when ,direction
- (list :direction ,direction))
- (when ,element-type
- (list :element-type ,element-type))
- (when ,if-exists
- (list :if-exists ,if-exists))
- (when ,if-does-not-exist
- (list :if-does-not-exist ,if-does-not-exist))
- (when ,external-format
- (list :external-format ,external-format)))))
- ,@body)))
-
-
- (defmacro with-input-from-file ((stream-name file-name &rest args
- &key (direction nil direction-p)
- &allow-other-keys)
- &body body)
- "Evaluate `body` with `stream-name` to an input stream on the file
-`file-name`. `args` is sent as is to the call to `open` except `external-format`,
-which is only sent to `with-open-file` when it's not `nil`."
- (declare (ignore direction))
- (when direction-p
- (error "Can't specifiy :DIRECTION for WITH-INPUT-FROM-FILE."))
- `(with-open-file* (,stream-name ,file-name :direction :input ,@args)
- ,@body))
-
-
- (defun read-file-into-string (pathname &key (buffer-size 4096) external-format)
- "Return the contents of the file denoted by `pathname` as a fresh string.
-
-The `external-format` parameter will be passed directly to `with-open-file`
-unless it's `nil`, which means the system default."
- (with-input-from-file
- (file-stream pathname :external-format external-format)
- (let ((*print-pretty* nil))
- (with-output-to-string (datum)
- (let ((buffer (make-array buffer-size :element-type 'character)))
- (loop
- :for bytes-read = (read-sequence buffer file-stream)
- :do (write-sequence buffer datum :start 0 :end bytes-read)
- :while (= bytes-read buffer-size)))))))
-
-
(defun mkstr (&rest args)
"Receives any number of objects (string, symbol, keyword, char, number), extracts all printed representations, and concatenates them all into one string.
@@ -299,36 +207,8 @@
unique symbol the named variable will be bound to."
`(with-gensyms ,names ,@forms))
-
- (defmacro with-output-to-file ((stream-name file-name &rest args
- &key (direction nil direction-p)
- &allow-other-keys)
- &body body)
- "Evaluate `body` with `stream-name` to an output stream on the file
-`file-name`. `args` is sent as is to the call to `open` except `external-format`,
-which is only sent to `with-open-file` when it's not `nil`."
- (declare (ignore direction))
- (when direction-p
- (error "Can't specifiy :DIRECTION for WITH-OUTPUT-TO-FILE."))
- `(with-open-file* (,stream-name ,file-name :direction :output ,@args)
- ,@body))
-
-
- (defun write-string-into-file (string pathname &key (if-exists :error)
- if-does-not-exist
- external-format)
- "Write `string` to `pathname`.
-
-The `external-format` parameter will be passed directly to `with-open-file`
-unless it's `nil`, which means the system default."
- (with-output-to-file (file-stream pathname :if-exists if-exists
- :if-does-not-exist if-does-not-exist
- :external-format external-format)
- (write-sequence string file-stream)))
-
(eval-when (:compile-toplevel :load-toplevel :execute)
- (export '(compose curry ensure-boolean ensure-gethash ensure-list n-grams
- once-only rcurry read-file-into-string symb with-gensyms
- with-unique-names write-string-into-file)))
+ (export '(curry ensure-boolean ensure-gethash n-grams once-only rcurry symb
+ with-gensyms with-unique-names)))
;;;; END OF quickutils.lisp ;;;;