From e8e981671660ab90750c06b54699669a6eb69cc1 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Sun, 13 Aug 2023 21:30:10 -0500 Subject: Remove talk of impls that apparently don't work (looking at you guile and chibi) --- Makefile | 6 +- README.md | 7 +- chicanery.sld | 412 ++++------------------------------------------------------ 3 files changed, 26 insertions(+), 399 deletions(-) diff --git a/Makefile b/Makefile index fabb64e..0b332f5 100644 --- a/Makefile +++ b/Makefile @@ -31,13 +31,9 @@ guile: supported guile -L . -l /tmp/chicanery.guile-bootstrap .PHONY: gambit -gambit: supported chicanery\#.scm +gambit: supported gsi . -e '(import (chicanery))' - -.PHONY: chibi -chibi: supported - chibi-scheme -I. -mchicanery - .PHONY: cyclone cyclone: unsupported @echo "Cyclone is unsupported." diff --git a/README.md b/README.md index c275ffb..2f27bc2 100644 --- a/README.md +++ b/README.md @@ -45,10 +45,9 @@ Other extras include `chicanery` now supports multiple R7RS implementations! The full list can be found by running `make`, but here's what we have right now: -- [Chicken](https://call-cc.org/) -- [Guile](https://www.gnu.org/software/guile/) -- [Gambit](https://gambitscheme.org/) -- [Chibi](https://synthcode.com/scheme/chibi) +### [Chicken](https://call-cc.org/) +### [Guile](https://www.gnu.org/software/guile/) +### [Gambit](https://gambitscheme.org/) Other Scheme implementations have been minimally tested and I haven't been able to figure them out yet. However, [Cyclone](https://justinethier.github.io/cyclone/) is definitively *not* compatible; see [issue #413](https://github.com/justinethier/cyclone/issues/413). diff --git a/chicanery.sld b/chicanery.sld index e6d5697..3a179c1 100644 --- a/chicanery.sld +++ b/chicanery.sld @@ -1,391 +1,23 @@ -;;; chicanery --- subtly breaking scheme expectations - (cond-expand - (r7rs) - (chicken (import r7rs utf8)) - (guile (install-r7rs!)) - (gambit (include "chicanery#.scm")) - (else (display "Unsupported R7RS implementation.\n" - (current-error-port)))) - -(define-library (chicanery) - ;; All the scheme stuff in one place - (import (rename (scheme base) - (map scheme/map) - (for-each scheme/for-each) - (append scheme/append))) - (import (scheme case-lambda)) - (import (scheme char)) - (import (scheme complex)) - (import (scheme cxr)) - (import (scheme eval)) - (import (scheme file)) - (import (scheme inexact)) - (import (scheme lazy)) - (import (scheme load)) - (import (scheme process-context)) - (import (scheme read)) - (import (scheme repl)) - (import (scheme time)) - (import (scheme write)) - - (cond-expand - ;; Chicken doesn't build utf8 support in by default (at least <=5) - (chicken (import (utf8))) - ;; Gambit has an extra `namespace' argument to `define-library' forms - (gambit (namespace "")) - (else)) - - (export * - + - - - / - <= - < - >= - = - > - abs - and - append - apply - assoc - assq - assv - begin - binary-port? - boolean? - boolean=? - bytevector - bytevector-append - bytevector-copy - bytevector-copy! - bytevector-length - bytevector-u8-ref - bytevector-u8-set! - bytevector? - car - cdr - caar - cadr - cdar - cddr - call-with-current-continuation - call/cc - call-with-port - call-with-values - case - ceiling - char-ready? - char->integer - integer->char - char=? - char? - char<=? - char>=? - char? - close-input-port - close-output-port - close-port - complex? - cond - cond-expand - cons - current-input-port - current-output-port - current-error-port - define - define-record-type - define-syntax - define-values - denominator - numerator - do - dynamic-wind - eof-object - eof-object? - eq? - eqv? - equal? - error - error-object-irritants - error-object-message - error-object? - even? - odd? - exact - inexact - exact-integer-sqrt - exact-integer? - exact? - inexact? - expt - features - file-error? - floor - floor/ - floor-quotient - floor-remainder - flush-output-port - for-each - gcd - lcm - get-output-bytevector - get-output-string - guard - if - import - import-for-syntax - import-syntax - include - include-ci - input-port-open? - output-port-open? - input-port? - output-port? - integer? - lambda - length - let - let* - letrec - letrec* - let-values - let*-values - let-syntax - letrec-syntax - list - list-copy - list-ref - list-set! - list-tail - list? - list->vector - make-bytevector - make-list - make-parameter - make-string - make-vector - map - max - min - member - memq - memv - modulo - negative? - positive? - newline - not - null? - number->string - string->number - number? - open-input-bytevector - open-output-bytevector - open-input-string - open-output-string - or - pair? - parameterize - peek-char - peek-u8 - port? - procedure? - quasiquote - quote - quotient - remainder - raise - raise-continuable - rational? - rationalize - read-bytevector - read-bytevector! - read-char - read-error? - read-line - read-string - read-u8 - real? - reverse - round - set! - set-car! - set-cdr! - square - string - string->list - list->string - string->utf8 - utf8->string - string->symbol - symbol->string - string->vector - string-append - string-copy - string-copy! - string-fill! - string-for-each - string-length - string-map - string-ref - string-set! - string=? - string? - string<=? - string>=? - string? - substring - symbol=? - symbol? - syntax-error - syntax-rules - textual-port? - truncate - truncate/ - truncate-quotient - truncate-remainder - u8-ready? - unless - ;;unquote - ;;unquote-splicing - values - vector - vector-append - vector-copy - vector-copy! - vector-fill! - vector-for-each - vector-length - vector-map - vector-ref - vector-set! - vector->list - vector->string - vector? - when - with-exception-handler - write-bytevector - write-char - write-string - write-u8 - zero? - ) - (export case-lambda) - (export char-alphabetic? - char-ci<=? - char-ci=? - char-ci>? - char-downcase - char-foldcase - char-lower-case? - char-numeric? - char-upcase - char-upper-case? - char-whitespace? - digit-value - string-ci<=? - string-ci=? - string-ci>? - string-downcase - string-foldcase - string-upcase) - (export angle - imag-part - magnitude - make-polar - make-rectangular - real-part) - (export caaaar - caaadr - caaar - caadar - caaddr - caadr - cadaar - cadadr - cadar - caddar - cadddr - caddr - cdaaar - cdaadr - cdaar - cdadar - cdaddr - cdadr - cddaar - cddadr - cddar - cdddar - cddddr - cdddr) - (export environment - eval) - (export call-with-input-file - call-with-output-file - delete-file - file-exists? - open-binary-input-file - open-binary-output-file - open-input-file - open-output-file - with-input-from-file - with-output-to-file) - (export acos - asin - atan - cos - exp - finite? - infinite? - log - nan? - sin - sqrt - tan) - (export delay - delay-force - force - make-promise - promise?) - (export load) - (export command-line - emergency-exit - exit - get-environment-variable - get-environment-variables) - (export read) - (export interaction-environment) - (export current-jiffy - current-second - jiffies-per-second) - (export display - write - write-shared - write-simple) - - ;; Extras - (export list-map - list-for-each - list-append - ref - copy - atom? - read-port - read-port-chunk-size - defined? - with-output-to-string - with-input-from-string - displayed ->string - written - print) - - (include "chicanery.extras.scm")) + (chicken + (include "impl/chicken.scm")) + (guile + (install-r7rs!) + (include "impl/guile.scm") + (include "extras.scm") + (export! append for-each map + list-append list-for-each list-map + ref copy + atom? + read-port read-port-chunk-size + defined? + with-output-to-string with-input-from-string + displayed ->string written + print)) + (gambit + (include "impl/gambit.scm")) + (r7rs + (display "R7RS!\n") + (define-library (chicanery) + (include "impl/r7rs.scm"))) + (else (exit #f))) -- cgit 1.4.1-21-gabe81