Files
data-lens/t/transducer.lisp
2021-01-02 22:24:31 -08:00

40 lines
2.1 KiB
Common Lisp

(defpackage :fwoar.lisp-sandbox.t.transducer
(:use :cl )
(:export ))
(in-package :fwoar.lisp-sandbox.t.transducer)
(5am:def-suite :data-lens.transducers)
(5am:in-suite :data-lens.transducers)
(5am:def-test mapping (:suite :data-lens.transducers)
(5am:is (equal '(2 3 4)
(data-lens.transducers:transduce (data-lens.transducers:mapping '1+)
'data-lens.transducers:list-builder
'(1 2 3)))))
(5am:def-test mv-mapping (:suite :data-lens.transducers)
(5am:is (equal '((2 0) (3 1) (4 2))
(data-lens.transducers:transduce (data-lens.transducers:mv-mapping
(lambda (it)
(values (1+ it) (1- it))))
'data-lens.transducers:list-builder
'(1 2 3)))))
(5am:def-test transducer-composition (:suite :data-lens.transducers)
(5am:is (equal '(3 5 7)
(data-lens.transducers:transduce (data-lens:
(data-lens.transducers:mapping
(lambda (x)
(* 2 x)))
(data-lens.transducers:mapping '1+))
'data-lens.transducers:list-builder
'(1 2 3))))
(5am:is (equal '(3 5 7)
(data-lens.transducers:transduce (data-lens:
(data-lens.transducers:mapping
(lambda (x)
(* 2 x)))
(data-lens.transducers:mapping '1+))
'data-lens.transducers:list-builder
'(1 2 3)))))