From ea8254a521e796cc97a678348894764ea4700710 Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Mon, 25 Jul 2016 12:18:29 -0600 Subject: [PATCH 01/13] Points release-info to my fork --- srfi-128.release-info | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srfi-128.release-info b/srfi-128.release-info index f007058..f3ab63f 100644 --- a/srfi-128.release-info +++ b/srfi-128.release-info @@ -1,11 +1,11 @@ (uri meta-file - "https://raw.githubusercontent.com/scheme-requests-for-implementation/{egg-name}/CHICKEN-{egg-release}/{egg-name}.meta") + "https://raw.githubusercontent.com/ThatGeoGuy/{egg-name}/CHICKEN-{egg-release}/{egg-name}.meta") (release "0.6") (release "0.5") (release "0.4") (release "0.3") -(repo git "git://github.com/scheme-requests-for-implementation/srfi-128.git") -(uri targz "https://codeload.github.com/scheme-requests-for-implementation/srfi-128/tar.gz/CHICKEN-{egg-release}" whole-repo) +(repo git "git://github.com/ThatGeoGuy/srfi-128.git") +(uri targz "https://codeload.github.com/ThatGeoGuy/srfi-128/tar.gz/CHICKEN-{egg-release}" whole-repo) (release "0.1" whole-repo) (release "0.2" whole-repo) From 819ef88b2b95adb4300e14f4665c22bb9689b1ca Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 29 Jan 2017 16:01:32 -0700 Subject: [PATCH 02/13] Adds fix for bug in make-list-comparator from Marc Nieper-Wisskirchen --- srfi-128.release-info | 1 + srfi-128.setup | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/srfi-128.release-info b/srfi-128.release-info index f3ab63f..95f86e7 100644 --- a/srfi-128.release-info +++ b/srfi-128.release-info @@ -1,5 +1,6 @@ (uri meta-file "https://raw.githubusercontent.com/ThatGeoGuy/{egg-name}/CHICKEN-{egg-release}/{egg-name}.meta") +(release "0.7") (release "0.6") (release "0.5") (release "0.4") diff --git a/srfi-128.setup b/srfi-128.setup index 7fe3663..99de3a6 100644 --- a/srfi-128.setup +++ b/srfi-128.setup @@ -10,4 +10,4 @@ (install-extension 'srfi-128 `("srfi-128.types" ,(dynld-name "srfi-128") ,(dynld-name "srfi-128.import")) - '((version "0.6"))) + '((version "0.7"))) From b808c60136b30aff642d0fe8c387c86485621e08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20F=2E=20Wittenberger?= Date: Fri, 17 Aug 2018 14:07:00 +0200 Subject: [PATCH 03/13] initial port to chicken 5 --- comparators/comparators.scm | 10 +++++----- comparators/r7rs-shim.scm | 6 +++--- srfi-128.egg | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 srfi-128.egg diff --git a/comparators/comparators.scm b/comparators/comparators.scm index 1f6ca0d..7b4afeb 100644 --- a/comparators/comparators.scm +++ b/comparators/comparators.scm @@ -4,8 +4,9 @@ (module srfi-128 () (import scheme) - (import (only chicken use export include case-lambda error define-record-type - make-parameter parameterize : define-type)) + (import (chicken type)) + (import (chicken base)) + (import (chicken module)) (export comparator? comparator-ordered? comparator-hashable?) (export make-comparator make-pair-comparator make-list-comparator make-vector-comparator @@ -19,9 +20,8 @@ (export comparator-if<=>) (export comparator-type-test-predicate comparator-equality-predicate comparator-ordering-predicate comparator-hash-function) - (use numbers) - (use srfi-4) - (use srfi-13) + (import srfi-4) + (import (except srfi-13 string-hash)) ;; That's odd, why is it redefined? (define-type :comparator: (struct comparator)) (define-type :type-test: (procedure (*) boolean)) (define-type :comparison-test: (procedure (* *) boolean)) diff --git a/comparators/r7rs-shim.scm b/comparators/r7rs-shim.scm index 5fded0a..700a94b 100644 --- a/comparators/r7rs-shim.scm +++ b/comparators/r7rs-shim.scm @@ -36,8 +36,8 @@ (define string-foldcase string-downcase) -(define (infinite? x) (or (= x +inf.0) (= x -inf.0))) +;; (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) -(define (nan? x) (not (= x x))) +;; (define (nan? x) (not (= x x))) -(define (exact-integer? obj) (and (integer? obj) (exact? obj))) +;; (define (exact-integer? obj) (and (integer? obj) (exact? obj))) diff --git a/srfi-128.egg b/srfi-128.egg new file mode 100644 index 0000000..f66e748 --- /dev/null +++ b/srfi-128.egg @@ -0,0 +1,16 @@ +;; -*- Hen -*- + +((synopsis "SRFI-128: Comparators (reduced)") + (version "0.7") + (license "BSD") + (category data) + (dependencies srfi-13) + (test-dependencies test) + (author "John Cowan") + (maintainer "Jeremy Steward, Jörg F. Wittenberger") + (synopsis "SRFI-128: Comparators (reduced)") + (components + (extension + srfi-128 + (types-file) + (csc-options "-O3" "-d2")))) From 40ebffbf2e3d13e6befbc0a0be887a16408bbd33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20F=2E=20Wittenberger?= Date: Fri, 17 Aug 2018 18:26:04 +0200 Subject: [PATCH 04/13] added missing file --- srfi-128.scm | 1 + 1 file changed, 1 insertion(+) create mode 100644 srfi-128.scm diff --git a/srfi-128.scm b/srfi-128.scm new file mode 100644 index 0000000..f25fb86 --- /dev/null +++ b/srfi-128.scm @@ -0,0 +1 @@ +(include "comparators/comparators.scm") From d7dee0c10eb72a3cb8096e31c543c7477bd610db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20F=2E=20Wittenberger?= Date: Fri, 17 Aug 2018 19:27:59 +0200 Subject: [PATCH 05/13] use cond-expand for backward compatibility --- comparators/comparators.scm | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/comparators/comparators.scm b/comparators/comparators.scm index 7b4afeb..117daac 100644 --- a/comparators/comparators.scm +++ b/comparators/comparators.scm @@ -4,9 +4,14 @@ (module srfi-128 () (import scheme) - (import (chicken type)) - (import (chicken base)) - (import (chicken module)) + (cond-expand + (chicken-5 + (import (chicken type)) + (import (chicken base)) + (import (chicken module))) + (else + (import (only chicken use export include case-lambda error define-record-type + make-parameter parameterize : define-type)))) (export comparator? comparator-ordered? comparator-hashable?) (export make-comparator make-pair-comparator make-list-comparator make-vector-comparator @@ -20,8 +25,15 @@ (export comparator-if<=>) (export comparator-type-test-predicate comparator-equality-predicate comparator-ordering-predicate comparator-hash-function) - (import srfi-4) - (import (except srfi-13 string-hash)) ;; That's odd, why is it redefined? + (cond-expand + (chicken-5 + (import srfi-4) + (import (except srfi-13 string-hash)) ;; That's odd, why is it redefined? + ) + (else + (use numbers) + (use srfi-4) + (use srfi-13))) (define-type :comparator: (struct comparator)) (define-type :type-test: (procedure (*) boolean)) (define-type :comparison-test: (procedure (* *) boolean)) From c7df8f98b74ade5dca43b2bbe321af426fd2c05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20F=2E=20Wittenberger?= Date: Fri, 17 Aug 2018 19:46:32 +0200 Subject: [PATCH 06/13] chicken specific ignore pattern --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 79801b1..6f7ee19 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,8 @@ *.import.scm *.so *.types +*.build.sh +*.install.sh +*.link +*.o salmonella.log From 2a7960cc32eccbe22320098b7793e1d2aaa985ba Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sat, 18 Aug 2018 15:16:30 -0600 Subject: [PATCH 07/13] Place shim definitions in cond-expand for chicken-4 infinite?, nan? and exact-integer? are all needed in the shim for chicken-4 --- comparators/r7rs-shim.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/comparators/r7rs-shim.scm b/comparators/r7rs-shim.scm index 700a94b..1152b39 100644 --- a/comparators/r7rs-shim.scm +++ b/comparators/r7rs-shim.scm @@ -22,8 +22,6 @@ (define exact inexact->exact) -; (define (exact-integer? x) (and (integer? x) (exact? x))) - (define bytevector? u8vector?) (define bytevector-length u8vector-length) @@ -36,8 +34,10 @@ (define string-foldcase string-downcase) -;; (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) +(cond-expand + (chicken-4 + (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) -;; (define (nan? x) (not (= x x))) + (define (nan? x) (not (= x x))) -;; (define (exact-integer? obj) (and (integer? obj) (exact? obj))) + (define (exact-integer? obj) (and (integer? obj) (exact? obj))))) From 5345e0584995cba57f1392212246fdf8e9c01780 Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 19 Aug 2018 10:52:08 -0600 Subject: [PATCH 08/13] Bumps release and ensures .egg file is also in release --- README.org | 11 ++++++++++- srfi-128.meta | 2 ++ srfi-128.release-info | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.org b/README.org index a4654bd..ddbe034 100644 --- a/README.org +++ b/README.org @@ -28,6 +28,8 @@ repository to host the library as a CHICKEN extension (egg). Thus, there are three files that are independent of the SRFI itself, and are as follows: + +*** CHICKEN-4 =srfi-128.meta= : This file denotes metadata about the CHICKEN extension, such as author, license, and dependencies (and dependencies for tests). @@ -35,6 +37,13 @@ for tests). =srfi-128.setup= : This file tells the CHICKEN package manager (=chicken-install=) how to build the egg. +*** CHICKEN-5 + +=srfi-128.egg= : This file tells the CHICKEN package manager (=chicken-install=) +how to build the egg, as well as any relevant metadata about the extension. + +*** All CHICKEN versions + =srfi-128.release-info= : Describes the URL / different releases of the CHICKEN extension. @@ -46,4 +55,4 @@ default test runner which merely includes the tests found in the ** License Provided under a single clause BSD license, Copyright (C) John Cowan -2016. See LICENSE for full details. \ No newline at end of file +2016. See LICENSE for full details. diff --git a/srfi-128.meta b/srfi-128.meta index 86e8461..584afe5 100644 --- a/srfi-128.meta +++ b/srfi-128.meta @@ -9,6 +9,8 @@ "comparators/r7rs-shim.scm" "comparators/complex-shim.scm" "tests/run.scm" + "srfi-128.egg" + "srfi-128.scm" "srfi-128.setup" "srfi-128.meta" "srfi-128.release-info" diff --git a/srfi-128.release-info b/srfi-128.release-info index 95f86e7..f2692bc 100644 --- a/srfi-128.release-info +++ b/srfi-128.release-info @@ -1,5 +1,6 @@ (uri meta-file "https://raw.githubusercontent.com/ThatGeoGuy/{egg-name}/CHICKEN-{egg-release}/{egg-name}.meta") +(release "0.8") (release "0.7") (release "0.6") (release "0.5") From 07c369e28d39ef1f09c66a4057330509d0f53d8e Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 19 Aug 2018 11:02:06 -0600 Subject: [PATCH 09/13] Revert "Place shim definitions in cond-expand for chicken-4" This reverts commit 2a7960cc32eccbe22320098b7793e1d2aaa985ba. --- comparators/r7rs-shim.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/comparators/r7rs-shim.scm b/comparators/r7rs-shim.scm index 1152b39..700a94b 100644 --- a/comparators/r7rs-shim.scm +++ b/comparators/r7rs-shim.scm @@ -22,6 +22,8 @@ (define exact inexact->exact) +; (define (exact-integer? x) (and (integer? x) (exact? x))) + (define bytevector? u8vector?) (define bytevector-length u8vector-length) @@ -34,10 +36,8 @@ (define string-foldcase string-downcase) -(cond-expand - (chicken-4 - (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) +;; (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) - (define (nan? x) (not (= x x))) +;; (define (nan? x) (not (= x x))) - (define (exact-integer? obj) (and (integer? obj) (exact? obj))))) +;; (define (exact-integer? obj) (and (integer? obj) (exact? obj))) From a472c647f58def4ef482c23b002a01cfa2608404 Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 19 Aug 2018 11:09:03 -0600 Subject: [PATCH 10/13] Properly adds cond-expand for old shim definitions --- comparators/r7rs-shim.scm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/comparators/r7rs-shim.scm b/comparators/r7rs-shim.scm index 700a94b..4249d76 100644 --- a/comparators/r7rs-shim.scm +++ b/comparators/r7rs-shim.scm @@ -22,8 +22,6 @@ (define exact inexact->exact) -; (define (exact-integer? x) (and (integer? x) (exact? x))) - (define bytevector? u8vector?) (define bytevector-length u8vector-length) @@ -36,8 +34,9 @@ (define string-foldcase string-downcase) -;; (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) - -;; (define (nan? x) (not (= x x))) - -;; (define (exact-integer? obj) (and (integer? obj) (exact? obj))) +(cond-expand + (chicken-5) + (else + (define (infinite? x) (or (= x +inf.0) (= x -inf.0))) + (define (nan? x) (not (= x x))) + (define (exact-integer? obj) (and (integer? obj) (exact? obj))))) From 966a0b5183e33c615264e67101b8779f28dea217 Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 19 Aug 2018 12:35:22 -0600 Subject: [PATCH 11/13] Fixes tests for C5 --- comparators/comparators-test.scm | 521 ++++++++++++++++--------------- comparators/comparators.scm | 27 +- comparators/default.scm | 3 +- srfi-128.egg | 2 +- 4 files changed, 280 insertions(+), 273 deletions(-) diff --git a/comparators/comparators-test.scm b/comparators/comparators-test.scm index 0756ce6..105bdd3 100644 --- a/comparators/comparators-test.scm +++ b/comparators/comparators-test.scm @@ -1,284 +1,291 @@ -(use test) -(use srfi-128) -(load "../comparators/r7rs-shim.scm") +(cond-expand + (chicken-5 + (import test) + (import (chicken base)) + (import (chicken eval)) + (import srfi-4) + (import srfi-13) + (import srfi-128)) + (else + (use test) + (use srfi-128))) + +(include "../comparators/r7rs-shim.scm") (define (print x) (display x) (newline)) -(test-group "comparators" - - (define (vector-cdr vec) - (let* ((len (vector-length vec)) - (result (make-vector (- len 1)))) - (let loop ((n 1)) - (cond - ((= n len) result) - (else (vector-set! result (- n 1) (vector-ref vec n)) - (loop (+ n 1))))))) - - (test '#(2 3 4) (vector-cdr '#(1 2 3 4))) - (test '#() (vector-cdr '#(1))) - - (print "default-comparator") - (define default-comparator (make-default-comparator)) - (print "real-comparator") - (define real-comparator (make-comparator real? = < number-hash)) - (print "degenerate comparator") - (define degenerate-comparator (make-comparator (lambda (x) #t) equal? #f #f)) - (print "boolean comparator") - (define boolean-comparator - (make-comparator boolean? eq? (lambda (x y) (and (not x) y)) boolean-hash)) - (print "bool-pair-comparator") - (define bool-pair-comparator (make-pair-comparator boolean-comparator boolean-comparator)) - (print "num-list-comparator") - (define num-list-comparator - (make-list-comparator real-comparator list? null? car cdr)) - (print "num-vector-comparator") - (define num-vector-comparator - (make-vector-comparator real-comparator vector? vector-length vector-ref)) - (print "vector-qua-list comparator") - (define vector-qua-list-comparator - (make-list-comparator - real-comparator - vector? - (lambda (vec) (= 0 (vector-length vec))) - (lambda (vec) (vector-ref vec 0)) - vector-cdr)) - (print "list-qua-vector-comparator") - (define list-qua-vector-comparator - (make-vector-comparator default-comparator list? length list-ref)) - (print "eq-comparator") - (define eq-comparator (make-eq-comparator)) - (print "eqv-comparator") - (define eqv-comparator (make-eqv-comparator)) - (print "equal-comparator") - (define equal-comparator (make-equal-comparator)) - (print "symbol-comparator") - (define symbol-comparator - (make-comparator - symbol? - eq? - (lambda (a b) (stringstring a) (symbol->string b))) - symbol-hash)) - - (test-group "comparators/predicates" - (test-assert (comparator? real-comparator)) - (test-assert (not (comparator? =))) - (test-assert (comparator-ordered? real-comparator)) - (test-assert (comparator-hashable? real-comparator)) - (test-assert (not (comparator-ordered? degenerate-comparator))) - (test-assert (not (comparator-hashable? degenerate-comparator))) +(define (vector-cdr vec) + (let* ((len (vector-length vec)) + (result (make-vector (- len 1)))) + (let loop ((n 1)) + (cond + ((= n len) result) + (else (vector-set! result (- n 1) (vector-ref vec n)) + (loop (+ n 1))))))) + +(test '#(2 3 4) (vector-cdr '#(1 2 3 4))) +(test '#() (vector-cdr '#(1))) + +(print "default-comparator") +(define default-comparator (make-default-comparator)) +(print "real-comparator") +(define real-comparator (make-comparator real? = < number-hash)) +(print "degenerate comparator") +(define degenerate-comparator (make-comparator (lambda (x) #t) equal? #f #f)) +(print "boolean comparator") +(define boolean-comparator + (make-comparator boolean? eq? (lambda (x y) (and (not x) y)) boolean-hash)) +(print "bool-pair-comparator") +(define bool-pair-comparator (make-pair-comparator boolean-comparator boolean-comparator)) +(print "num-list-comparator") +(define num-list-comparator + (make-list-comparator real-comparator list? null? car cdr)) +(print "num-vector-comparator") +(define num-vector-comparator + (make-vector-comparator real-comparator vector? vector-length vector-ref)) +(print "vector-qua-list comparator") +(define vector-qua-list-comparator + (make-list-comparator + real-comparator + vector? + (lambda (vec) (= 0 (vector-length vec))) + (lambda (vec) (vector-ref vec 0)) + vector-cdr)) +(print "list-qua-vector-comparator") +(define list-qua-vector-comparator + (make-vector-comparator default-comparator list? length list-ref)) +(print "eq-comparator") +(define eq-comparator (make-eq-comparator)) +(print "eqv-comparator") +(define eqv-comparator (make-eqv-comparator)) +(print "equal-comparator") +(define equal-comparator (make-equal-comparator)) +(print "symbol-comparator") +(define symbol-comparator + (make-comparator + symbol? + eq? + (lambda (a b) (stringstring a) (symbol->string b))) + symbol-hash)) + +(test-group "comparators/predicates" + (test-assert (comparator? real-comparator)) + (test-assert (not (comparator? =))) + (test-assert (comparator-ordered? real-comparator)) + (test-assert (comparator-hashable? real-comparator)) + (test-assert (not (comparator-ordered? degenerate-comparator))) + (test-assert (not (comparator-hashable? degenerate-comparator))) ) ; end comparators/predicates - (test-group "comparators/constructors" - (test-assert (=? boolean-comparator #t #t)) - (test-assert (not (=? boolean-comparator #t #f))) - (test-assert (? real-comparator 4.0 3.0 2)) - (test-assert (<=? real-comparator 2.0 2 3.0)) - (test-assert (>=? real-comparator 3 3.0 2)) - (test-assert (not (=? real-comparator 1 2 3))) - (test-assert (not (? real-comparator 1 2 3))) - (test-assert (not (<=? real-comparator 4 3 3))) - (test-assert (not (>=? real-comparator 3 4 4.0))) +(test-group "comparators/comparison" + (test-assert (=? real-comparator 2 2.0 2)) + (test-assert (? real-comparator 4.0 3.0 2)) + (test-assert (<=? real-comparator 2.0 2 3.0)) + (test-assert (>=? real-comparator 3 3.0 2)) + (test-assert (not (=? real-comparator 1 2 3))) + (test-assert (not (? real-comparator 1 2 3))) + (test-assert (not (<=? real-comparator 4 3 3))) + (test-assert (not (>=? real-comparator 3 4 4.0))) ) ; end comparators/comparison - (test-group "comparators/syntax" - (test 'less (comparator-if<=> real-comparator 1 2 'less 'equal 'greater)) - (test 'equal (comparator-if<=> real-comparator 1 1 'less 'equal 'greater)) - (test 'greater (comparator-if<=> real-comparator 2 1 'less 'equal 'greater)) - (test 'less (comparator-if<=> "1" "2" 'less 'equal 'greater)) - (test 'equal (comparator-if<=> "1" "1" 'less 'equal 'greater)) - (test 'greater (comparator-if<=> "2" "1" 'less 'equal 'greater)) +(test-group "comparators/syntax" + (test 'less (comparator-if<=> real-comparator 1 2 'less 'equal 'greater)) + (test 'equal (comparator-if<=> real-comparator 1 1 'less 'equal 'greater)) + (test 'greater (comparator-if<=> real-comparator 2 1 'less 'equal 'greater)) + (test 'less (comparator-if<=> "1" "2" 'less 'equal 'greater)) + (test 'equal (comparator-if<=> "1" "1" 'less 'equal 'greater)) + (test 'greater (comparator-if<=> "2" "1" 'less 'equal 'greater)) ) ; end comparators/syntax - (test-group "comparators/bound-salt" - (test-assert (exact-integer? (hash-bound))) - (test-assert (exact-integer? (hash-salt))) - (test-assert (< (hash-salt) (hash-bound))) +(test-group "comparators/bound-salt" + (test-assert (exact-integer? (hash-bound))) + (test-assert (exact-integer? (hash-salt))) + (test-assert (< (hash-salt) (hash-bound))) ) ; end comparators/bound-salt -) ; end comparators - (test-exit) diff --git a/comparators/comparators.scm b/comparators/comparators.scm index 117daac..60bf594 100644 --- a/comparators/comparators.scm +++ b/comparators/comparators.scm @@ -6,12 +6,19 @@ (import scheme) (cond-expand (chicken-5 - (import (chicken type)) (import (chicken base)) - (import (chicken module))) + (import (chicken type)) + (import (chicken module)) + (import srfi-4) + ;; FIXME: why is string-hash redefined? + (import (except srfi-13 string-hash))) (else (import (only chicken use export include case-lambda error define-record-type - make-parameter parameterize : define-type)))) + make-parameter parameterize : define-type)) + (use numbers) + (use srfi-4) + (use srfi-13))) + (export comparator? comparator-ordered? comparator-hashable?) (export make-comparator make-pair-comparator make-list-comparator make-vector-comparator @@ -24,24 +31,18 @@ (export =? ? <=? >=?) (export comparator-if<=>) (export comparator-type-test-predicate comparator-equality-predicate - comparator-ordering-predicate comparator-hash-function) - (cond-expand - (chicken-5 - (import srfi-4) - (import (except srfi-13 string-hash)) ;; That's odd, why is it redefined? - ) - (else - (use numbers) - (use srfi-4) - (use srfi-13))) + comparator-ordering-predicate comparator-hash-function) + (define-type :comparator: (struct comparator)) (define-type :type-test: (procedure (*) boolean)) (define-type :comparison-test: (procedure (* *) boolean)) (define-type :hash-code: fixnum) (define-type :hash-function: (procedure (*) :hash-code:)) + (include "comparators/r7rs-shim.scm") (include "comparators/comparators-impl.scm") (include "comparators/default.scm") + ;; Chicken type declarations (: comparator? (* --> boolean : :comparator:)) (: comparator-type-test-predicate (:comparator: --> :type-test:)) diff --git a/comparators/default.scm b/comparators/default.scm index 1c1394e..ad79d51 100644 --- a/comparators/default.scm +++ b/comparators/default.scm @@ -97,7 +97,7 @@ bytevector? bytevector-length bytevector-u8-ref) obj)) ; Add more here (else (comparator-hash (registered-comparator (object-type obj)) obj)))) - + (define (default-ordering a b) (let ((a-type (object-type a)) (b-type (object-type b))) @@ -117,4 +117,3 @@ default-equality default-ordering default-hash)) - diff --git a/srfi-128.egg b/srfi-128.egg index f66e748..873a5cc 100644 --- a/srfi-128.egg +++ b/srfi-128.egg @@ -1,7 +1,7 @@ ;; -*- Hen -*- ((synopsis "SRFI-128: Comparators (reduced)") - (version "0.7") + (version "0.8") (license "BSD") (category data) (dependencies srfi-13) From 545ba65f0ab358a35e5949ef1a4cd64cff0dae1c Mon Sep 17 00:00:00 2001 From: Jeremy Steward Date: Sun, 19 Aug 2018 15:22:07 -0600 Subject: [PATCH 12/13] Version bump for 0.9 --- srfi-128.egg | 2 +- srfi-128.release-info | 1 + srfi-128.setup | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/srfi-128.egg b/srfi-128.egg index 873a5cc..daf56a9 100644 --- a/srfi-128.egg +++ b/srfi-128.egg @@ -1,7 +1,7 @@ ;; -*- Hen -*- ((synopsis "SRFI-128: Comparators (reduced)") - (version "0.8") + (version "0.9") (license "BSD") (category data) (dependencies srfi-13) diff --git a/srfi-128.release-info b/srfi-128.release-info index f2692bc..3fc670f 100644 --- a/srfi-128.release-info +++ b/srfi-128.release-info @@ -1,5 +1,6 @@ (uri meta-file "https://raw.githubusercontent.com/ThatGeoGuy/{egg-name}/CHICKEN-{egg-release}/{egg-name}.meta") +(release "0.9") (release "0.8") (release "0.7") (release "0.6") diff --git a/srfi-128.setup b/srfi-128.setup index 99de3a6..d27b2aa 100644 --- a/srfi-128.setup +++ b/srfi-128.setup @@ -10,4 +10,4 @@ (install-extension 'srfi-128 `("srfi-128.types" ,(dynld-name "srfi-128") ,(dynld-name "srfi-128.import")) - '((version "0.7"))) + '((version "0.9"))) From 1691b55deb548920c611895d05d9e990bc4f0384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20F=2E=20Wittenberger?= Date: Wed, 10 Oct 2018 19:24:46 +0200 Subject: [PATCH 13/13] fix lesser bug in implementation simillar to 70c87030e6e2c4 --- comparators/comparators-impl.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comparators/comparators-impl.scm b/comparators/comparators-impl.scm index 7f61da0..06380a4 100644 --- a/comparators/comparators-impl.scm +++ b/comparators/comparators-impl.scm @@ -264,7 +264,7 @@ (let ((elem=? (comparator-equality-predicate element-comparator))) (let loop ((a a) (b b)) (cond - ((and (empty? a) (empty? b) #t)) + ((and (empty? a) (empty? b)) #t) ((empty? a) #f) ((empty? b) #f) ((elem=? (head a) (head b)) (loop (tail a) (tail b)))