Compare commits

..

1 Commits

Author SHA1 Message Date
c80aff0f0b bug: fix missing symbols in tests 2021-01-18 10:27:03 -08:00
5 changed files with 30 additions and 80 deletions

View File

@ -1,48 +1,20 @@
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v15
- name: Docker Setup QEMU
uses: docker/setup-qemu-action@v1.0.1
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
# Runs a set of commands using the runners shell
- name: setup deps
run: |
nix profile install nixpkgs\#sbcl
cd
wget 'https://beta.quicklisp.org/quicklisp.lisp'
sbcl --eval '(require :uiop)' \
--load quicklisp.lisp \
--eval '(handler-case (progn (error "fail!") (quicklisp-quickstart:install)) (error () (uiop:quit 40)))' \
--quit
- name: run tests
run: |
cd "$GITHUB_WORKSPACE"
sbcl --load "$HOME/quicklisp/setup.lisp" \
--eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \
--eval "(ql:quickload :data-lens/transducers/test)" \
--eval "(asdf:test-system :data-lens/transducers/test)" \
--quit
platforms: arm64
- name: Run a one-line script
run: make test

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
*.fasl
*.*x*fsl
*~
.*.sw?

View File

@ -1,3 +1,7 @@
load_no_trans:
docker build . --tag data-lens-transducer-test
docker run data-lens-transducer-test --eval "(asdf:test-system :data-lens)" --quit
test:
docker build . --tag data-lens-transducer-test
docker run data-lens-transducer-test --eval "(asdf:test-system :data-lens/beta/transducers)" --quit

View File

@ -125,12 +125,6 @@
(declare (dynamic-extent map))
(extract-key map key)))
(defun keys (key &rest keys)
(lambda (map)
(loop for key in (cons key keys)
for cur = (extract-key map key) then (extract-key cur key)
finally (return cur))))
(defun-ct regex-match (regex)
(lambda (data)
(cl-ppcre:scan-to-strings regex data)))
@ -275,16 +269,10 @@
(apply ,fsym ,@args ,seq)))))
(defun-ct on (fun key)
"Transform arguments with KEY and then apply FUN
> (eql (funcall (on 'equal 'car)
> '(\"a\" 1 2)
> '(\"a\" 2 e))
> t)"
(let ((fun (functionalize fun))
(key (functionalize key)))
(lambda (&rest its)
(funcall fun (mapcar key its)))))
(lambda (it)
(funcall fun (funcall key it)))))
(defun filler (length1 length2 fill-value)
(if (< length1 length2)
@ -323,20 +311,6 @@
it
(alexandria:iota it-length))))))))
(defun-ct group-by (fn &key (test 'equal))
(lambda (seq)
(let ((groups (make-hash-table :test test)))
(map nil
(lambda (it)
(push it
(gethash (funcall fn it)
groups)))
seq)
(mapcar (lambda (it)
(cons (car it)
(reverse (cdr it))))
(alexandria:hash-table-alist groups)))))
#+nil
(defmacro <> (arity &rest funs)
(let ((arg-syms (loop repeat arity collect (gensym))))

View File

@ -6,36 +6,35 @@
(defpackage :data-lens.lenses
(:shadow :set)
(:use :cl)
(:export #:over #:set #:view #:make-alist-lens #:make-plist-lens
#:make-hash-table-lens #:make-list-lens))
(:export :over :set :view :make-alist-lens :make-plist-lens :make-hash-table-lens
:make-list-lens))
(defpackage :data-lens
(:use :cl)
(:import-from #:serapeum #:op #:defalias)
(:export #:regex-match #:include #:exclude #:pick #:key-transform
#:combine #:derive #:cumsum #:over #:on #:shortcut
#:defun-ct #:key #:extract-key #:element #:let-fn #:juxt
#:transform-tail #:slice #:compress-runs
#:combine-matching-lists #:sorted #:applicable-when
#:combine #:derive #:cumsum #:over #:on #:shortcut #:defun-ct #:key
#:extract-key #:element #:let-fn #:juxt #:transform-tail #:slice
#:compress-runs #:combine-matching-lists #:sorted #:applicable-when
#:of-length #:of-min-length #:of-max-length #:transform-head
#:maximizing #:zipping #:applying #:splice-elt
#:transform-elt #:denest #:op #:defalias #:<> #:<>1 #:== #:
#:suffixp #:functionalize #:inc #:group-by #:keys))
#:maximizing #:zipping #:applying #:splice-elt #:transform-elt #:denest
#:op #:defalias #:<> #:<>1 #:== #: #:suffixp #:functionalize
#:inc))
(defpackage :data-lens.transducers.internals
(:use :cl)
(:export #:unwrap #:init #:reduce-generic #:stepper #:transduce
#:exit-early #:into
#:builder-for-input))
#:exit-early #:into #:builder-for-input))
(defpackage :data-lens.transducers
(:use :cl)
(:import-from #:data-lens.transducers.internals
(:import-from :data-lens.transducers.internals
#:unwrap #:init #:reduce-generic #:stepper #:transduce
#:exit-early #:into)
(:export #:mapping #:filtering #:deduping #:catting #:splitting
#:exit-early #:taking #:dropping #:transduce
#:hash-table-builder #:vector-builder #:list-builder
#:collecting #:mv-mapping #:mv-selecting :hash-table-select
#:mv-filtering #:mapcatting :lazy-sequence
#:compressing-runs #:iota :repeating #:repeating* #:into))
(:export #:mapping :filtering :deduping :catting :splitting
#:exit-early :taking :dropping :transduce
#:hash-table-builder :vector-builder :list-builder
#:collecting #:mv-mapping #:mv-selecting
#:hash-table-select #:mv-filtering #:mapcatting
#:lazy-sequence #:compressing-runs #:iota
#:repeating #:repeating* #:into))