mirror of
https://github.com/fiddlerwoaroof/data-lens.git
synced 2025-11-08 18:26:32 +00:00
refactor(transducers): remove package names
This commit is contained in:
@ -103,33 +103,33 @@
|
|||||||
(init build)))))
|
(init build)))))
|
||||||
(defun eduction (xf seq)
|
(defun eduction (xf seq)
|
||||||
(lambda (build)
|
(lambda (build)
|
||||||
(data-lens.transducers.internals:unwrap
|
(unwrap
|
||||||
build
|
build
|
||||||
(catch 'done
|
(catch 'done
|
||||||
(data-lens.transducers.internals:reduce-generic seq
|
(reduce-generic seq
|
||||||
(funcall xf (stepper build))
|
(funcall xf (stepper build))
|
||||||
(init build))))))
|
(init build))))))
|
||||||
|
|
||||||
(defmethod data-lens.transducers.internals:init ((it (eql 'hash-table-builder)))
|
(defmethod init ((it (eql 'hash-table-builder)))
|
||||||
(make-hash-table))
|
(make-hash-table))
|
||||||
(defmethod data-lens.transducers.internals:stepper ((it (eql 'hash-table-builder)))
|
(defmethod stepper ((it (eql 'hash-table-builder)))
|
||||||
(lambda (acc next)
|
(lambda (acc next)
|
||||||
(destructuring-bind (k v) next
|
(destructuring-bind (k v) next
|
||||||
(setf (gethash k acc) v))
|
(setf (gethash k acc) v))
|
||||||
acc))
|
acc))
|
||||||
|
|
||||||
(defmethod data-lens.transducers.internals:init ((it (eql 'vector-builder)))
|
(defmethod init ((it (eql 'vector-builder)))
|
||||||
(make-array 0 :fill-pointer t :adjustable t))
|
(make-array 0 :fill-pointer t :adjustable t))
|
||||||
(defmethod data-lens.transducers.internals:stepper ((it (eql 'vector-builder)))
|
(defmethod stepper ((it (eql 'vector-builder)))
|
||||||
(lambda (acc next)
|
(lambda (acc next)
|
||||||
(vector-push-extend next acc)
|
(vector-push-extend next acc)
|
||||||
acc))
|
acc))
|
||||||
|
|
||||||
(defmethod data-lens.transducers.internals:init ((it (eql 'list-builder)))
|
(defmethod init ((it (eql 'list-builder)))
|
||||||
(declare (optimize (speed 3)))
|
(declare (optimize (speed 3)))
|
||||||
(coerce (vector nil nil)
|
(coerce (vector nil nil)
|
||||||
'(simple-array list (2))))
|
'(simple-array list (2))))
|
||||||
(defmethod data-lens.transducers.internals:stepper ((it (eql 'list-builder)))
|
(defmethod stepper ((it (eql 'list-builder)))
|
||||||
(lambda (acc a)
|
(lambda (acc a)
|
||||||
(declare (optimize (speed 3))
|
(declare (optimize (speed 3))
|
||||||
(type (simple-array list (2)) acc))
|
(type (simple-array list (2)) acc))
|
||||||
@ -141,14 +141,14 @@
|
|||||||
(setf (elt acc 0) new
|
(setf (elt acc 0) new
|
||||||
(elt acc 1) new)))
|
(elt acc 1) new)))
|
||||||
acc))
|
acc))
|
||||||
(defmethod data-lens.transducers.internals:unwrap ((it (eql 'list-builder)) obj)
|
(defmethod unwrap ((it (eql 'list-builder)) obj)
|
||||||
(elt obj 0))
|
(elt obj 0))
|
||||||
|
|
||||||
(defclass lazy-sequence ()
|
(defclass lazy-sequence ()
|
||||||
((%next :initarg :next :reader next)))
|
((%next :initarg :next :reader next)))
|
||||||
(defun lazy-sequence (next)
|
(defun lazy-sequence (next)
|
||||||
(make-instance 'lazy-sequence :next next))
|
(make-instance 'lazy-sequence :next next))
|
||||||
(defmethod data-lens.transducers.internals:reduce-generic ((seq lazy-sequence) (func function) init)
|
(defmethod reduce-generic ((seq lazy-sequence) (func function) init)
|
||||||
(let ((next (next seq)))
|
(let ((next (next seq)))
|
||||||
(loop for next-val = (funcall next)
|
(loop for next-val = (funcall next)
|
||||||
for acc = init then next-acc
|
for acc = init then next-acc
|
||||||
@ -168,7 +168,8 @@
|
|||||||
(catting)
|
(catting)
|
||||||
(mapping #'parse-integer)
|
(mapping #'parse-integer)
|
||||||
(filtering (complement #'evenp))
|
(filtering (complement #'evenp))
|
||||||
(mapping (data-lens:juxt #'identity #'identity))
|
(mapping (data-lens:juxt #'identity
|
||||||
|
#'identity))
|
||||||
(mapping (data-lens:transform-head #'2*))
|
(mapping (data-lens:transform-head #'2*))
|
||||||
(mapping (data-lens:transform-head #'1+))
|
(mapping (data-lens:transform-head #'1+))
|
||||||
(taking 2))
|
(taking 2))
|
||||||
|
|||||||
Reference in New Issue
Block a user