(defun get-file-lines (name) (uiop:read-file-lines name)) (defun partial (func &rest args1) (lambda (&rest args2) (apply func (append args1 args2)))) (defun compose (a b) (lambda (&rest args) (funcall a (apply b args)))) (defun filter (func l) (loop :for i :in l :when (funcall func i) :collect i)) (defun trim (input) (string-trim '(#\Space #\Newline #\Backspace #\Tab #\Linefeed #\Page #\Return #\Rubout) input)) (defun fold-left (reducer initial list) (loop for fold = initial then (funcall reducer fold element) for element in list finally (return fold)))