mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 21:10:27 +02:00
Support R7RS.
* module/Makefile.am: Add r7rs-libraries.scm as dependency for boot-9.go. (SOURCES): Add $(R7RS_SOURCES). (R7RS_SOURCES): New variable. (NOCOMP_SOURCES): Add ice-9/r7rs-libraries.scm. * module/ice-9/boot-9.scm: Include r7rs-libraries.scm. (%cond-expand-features): Add r7rs, exact-closed, ieee-float, full-unicode, and ratios. Add TODO comments. (%cond-expand): New procedure, derived from code in 'cond-expand'. (cond-expand): Reimplement in terms of '%cond-expand'. * module/ice-9/r7rs-libraries.scm: module/scheme/base.scm: module/scheme/case-lambda.scm: module/scheme/char.scm: module/scheme/complex.scm: module/scheme/cxr.scm: module/scheme/eval.scm: module/scheme/file.scm: module/scheme/inexact.scm: module/scheme/lazy.scm: module/scheme/load.scm: module/scheme/process-context.scm: module/scheme/r5rs.scm: module/scheme/read.scm: module/scheme/repl.scm: module/scheme/time.scm: module/scheme/write.scm: New files.
This commit is contained in:
parent
b1bc025224
commit
2d76447bda
19 changed files with 1587 additions and 4 deletions
|
@ -33,7 +33,7 @@ nobase_ccache_DATA += ice-9/eval.go
|
||||||
EXTRA_DIST += ice-9/eval.scm
|
EXTRA_DIST += ice-9/eval.scm
|
||||||
ETAGS_ARGS += ice-9/eval.scm
|
ETAGS_ARGS += ice-9/eval.scm
|
||||||
|
|
||||||
ice-9/boot-9.go: ice-9/boot-9.scm ice-9/quasisyntax.scm ice-9/r6rs-libraries.scm
|
ice-9/boot-9.go: ice-9/boot-9.scm ice-9/quasisyntax.scm ice-9/r6rs-libraries.scm ice-9/r7rs-libraries.scm
|
||||||
ice-9/match.go: ice-9/match.scm ice-9/match.upstream.scm
|
ice-9/match.go: ice-9/match.scm ice-9/match.upstream.scm
|
||||||
|
|
||||||
# We can compile these in any order, but it's fastest if we compile
|
# We can compile these in any order, but it's fastest if we compile
|
||||||
|
@ -62,6 +62,7 @@ SOURCES = \
|
||||||
$(ICE_9_SOURCES) \
|
$(ICE_9_SOURCES) \
|
||||||
$(SRFI_SOURCES) \
|
$(SRFI_SOURCES) \
|
||||||
$(RNRS_SOURCES) \
|
$(RNRS_SOURCES) \
|
||||||
|
$(R7RS_SOURCES) \
|
||||||
$(OOP_SOURCES) \
|
$(OOP_SOURCES) \
|
||||||
$(SYSTEM_SOURCES) \
|
$(SYSTEM_SOURCES) \
|
||||||
$(SCRIPTS_SOURCES) \
|
$(SCRIPTS_SOURCES) \
|
||||||
|
@ -323,6 +324,24 @@ RNRS_SOURCES = \
|
||||||
rnrs/records/syntactic.scm \
|
rnrs/records/syntactic.scm \
|
||||||
rnrs.scm
|
rnrs.scm
|
||||||
|
|
||||||
|
R7RS_SOURCES = \
|
||||||
|
scheme/base.scm \
|
||||||
|
scheme/case-lambda.scm \
|
||||||
|
scheme/char.scm \
|
||||||
|
scheme/complex.scm \
|
||||||
|
scheme/cxr.scm \
|
||||||
|
scheme/eval.scm \
|
||||||
|
scheme/file.scm \
|
||||||
|
scheme/inexact.scm \
|
||||||
|
scheme/lazy.scm \
|
||||||
|
scheme/load.scm \
|
||||||
|
scheme/process-context.scm \
|
||||||
|
scheme/r5rs.scm \
|
||||||
|
scheme/read.scm \
|
||||||
|
scheme/repl.scm \
|
||||||
|
scheme/time.scm \
|
||||||
|
scheme/write.scm
|
||||||
|
|
||||||
EXTRA_DIST += scripts/ChangeLog-2008
|
EXTRA_DIST += scripts/ChangeLog-2008
|
||||||
EXTRA_DIST += scripts/README
|
EXTRA_DIST += scripts/README
|
||||||
|
|
||||||
|
@ -396,6 +415,7 @@ NOCOMP_SOURCES = \
|
||||||
ice-9/match.upstream.scm \
|
ice-9/match.upstream.scm \
|
||||||
ice-9/psyntax.scm \
|
ice-9/psyntax.scm \
|
||||||
ice-9/r6rs-libraries.scm \
|
ice-9/r6rs-libraries.scm \
|
||||||
|
ice-9/r7rs-libraries.scm \
|
||||||
ice-9/quasisyntax.scm \
|
ice-9/quasisyntax.scm \
|
||||||
srfi/srfi-42/ec.scm \
|
srfi/srfi-42/ec.scm \
|
||||||
srfi/srfi-64/testing.scm \
|
srfi/srfi-64/testing.scm \
|
||||||
|
|
|
@ -3653,6 +3653,7 @@ CONV is not applied to the initial value."
|
||||||
(use-modules spec ...)))
|
(use-modules spec ...)))
|
||||||
|
|
||||||
(include-from-path "ice-9/r6rs-libraries")
|
(include-from-path "ice-9/r6rs-libraries")
|
||||||
|
(include-from-path "ice-9/r7rs-libraries")
|
||||||
|
|
||||||
(define-syntax-rule (define-private foo bar)
|
(define-syntax-rule (define-private foo bar)
|
||||||
(define foo bar))
|
(define foo bar))
|
||||||
|
@ -4104,6 +4105,19 @@ when none is available, reading FILE-NAME with READER."
|
||||||
'(guile
|
'(guile
|
||||||
guile-2
|
guile-2
|
||||||
r5rs
|
r5rs
|
||||||
|
|
||||||
|
r7rs
|
||||||
|
exact-closed
|
||||||
|
ieee-float ; XXX might not always be true
|
||||||
|
full-unicode
|
||||||
|
ratios
|
||||||
|
;; XXX TODO where appropriate, add 'posix', 'windows', 'unix',
|
||||||
|
;; 'darwin', 'gnu-linux', 'bsd', 'freebsd', 'solaris', per R7RS.
|
||||||
|
;; XXX TODO where appropriate, add 'i386', 'x86-64', 'ppc',
|
||||||
|
;; 'sparc', etc, per R7RS.
|
||||||
|
;; XXX TODO where appropriate, add 'ilp32', 'lp64', 'ilp64', etc, per R7RS.
|
||||||
|
;; XXX TODO add 'little-endian' or 'big-endian', per R7RS
|
||||||
|
|
||||||
srfi-0 ;; cond-expand itself
|
srfi-0 ;; cond-expand itself
|
||||||
srfi-4 ;; homogeneous numeric vectors
|
srfi-4 ;; homogeneous numeric vectors
|
||||||
;; We omit srfi-6 because the 'open-input-string' etc in Guile
|
;; We omit srfi-6 because the 'open-input-string' etc in Guile
|
||||||
|
@ -4137,7 +4151,7 @@ when none is available, reading FILE-NAME with READER."
|
||||||
(append (hashq-ref %cond-expand-table mod '())
|
(append (hashq-ref %cond-expand-table mod '())
|
||||||
features)))))
|
features)))))
|
||||||
|
|
||||||
(define-syntax cond-expand
|
(define %cond-expand
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(define (module-has-feature? mod sym)
|
(define (module-has-feature? mod sym)
|
||||||
(or-map (lambda (mod)
|
(or-map (lambda (mod)
|
||||||
|
@ -4152,6 +4166,7 @@ when none is available, reading FILE-NAME with READER."
|
||||||
(or-map condition-matches? #'(c ...)))
|
(or-map condition-matches? #'(c ...)))
|
||||||
((not c)
|
((not c)
|
||||||
(if (condition-matches? #'c) #f #t))
|
(if (condition-matches? #'c) #f #t))
|
||||||
|
;; XXX FIXME: Implement (library <library-name>) clause per R7RS
|
||||||
(c
|
(c
|
||||||
(identifier? #'c)
|
(identifier? #'c)
|
||||||
(let ((sym (syntax->datum #'c)))
|
(let ((sym (syntax->datum #'c)))
|
||||||
|
@ -4163,7 +4178,7 @@ when none is available, reading FILE-NAME with READER."
|
||||||
(syntax-case clauses ()
|
(syntax-case clauses ()
|
||||||
(((condition form ...) . rest)
|
(((condition form ...) . rest)
|
||||||
(if (condition-matches? #'condition)
|
(if (condition-matches? #'condition)
|
||||||
#'(begin form ...)
|
#'(form ...)
|
||||||
(match #'rest alternate)))
|
(match #'rest alternate)))
|
||||||
(() (alternate))))
|
(() (alternate))))
|
||||||
|
|
||||||
|
@ -4171,12 +4186,16 @@ when none is available, reading FILE-NAME with READER."
|
||||||
((_ clause ... (else form ...))
|
((_ clause ... (else form ...))
|
||||||
(match #'(clause ...)
|
(match #'(clause ...)
|
||||||
(lambda ()
|
(lambda ()
|
||||||
#'(begin form ...))))
|
#'(form ...))))
|
||||||
((_ clause ...)
|
((_ clause ...)
|
||||||
(match #'(clause ...)
|
(match #'(clause ...)
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(syntax-violation 'cond-expand "unfulfilled cond-expand" x)))))))
|
(syntax-violation 'cond-expand "unfulfilled cond-expand" x)))))))
|
||||||
|
|
||||||
|
(define-syntax cond-expand
|
||||||
|
(lambda (x)
|
||||||
|
#`(begin #,@(%cond-expand x))))
|
||||||
|
|
||||||
;; This procedure gets called from the startup code with a list of
|
;; This procedure gets called from the startup code with a list of
|
||||||
;; numbers, which are the numbers of the SRFIs to be loaded on startup.
|
;; numbers, which are the numbers of the SRFIs to be loaded on startup.
|
||||||
;;
|
;;
|
||||||
|
|
96
module/ice-9/r7rs-libraries.scm
Normal file
96
module/ice-9/r7rs-libraries.scm
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
;;; r7rs-libraries.scm --- Support for the R7RS `define-library' form
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
;; This file is included from boot-9.scm and assumes the existence of
|
||||||
|
;; (and expands into) procedures and syntactic forms defined therein.
|
||||||
|
|
||||||
|
(define-syntax define-library
|
||||||
|
(lambda (form)
|
||||||
|
(syntax-case form ()
|
||||||
|
((_ (module-name ...) (decl-type . decl-args) ...)
|
||||||
|
(and-map (lambda (x)
|
||||||
|
(or (identifier? x)
|
||||||
|
(exact-integer? (syntax->datum x)))) ; XXX FIXME handle exact integers properly
|
||||||
|
#'(module-name ...))
|
||||||
|
(let loop ((decls #'((decl-type . decl-args) ...))
|
||||||
|
(imports '())
|
||||||
|
(exports '())
|
||||||
|
(bodies '()))
|
||||||
|
(if (null? decls)
|
||||||
|
#`(library (module-name ...)
|
||||||
|
(export #,@(reverse exports))
|
||||||
|
(import #,@(reverse imports))
|
||||||
|
#,@(reverse bodies))
|
||||||
|
(let ((decl (car decls)))
|
||||||
|
(define (splice-in xs)
|
||||||
|
(loop (append xs (cdr decls)) imports exports bodies))
|
||||||
|
(define (new-imports specs)
|
||||||
|
(loop (cdr decls) (append (reverse specs) imports) exports bodies))
|
||||||
|
(define (new-exports specs)
|
||||||
|
(loop (cdr decls) imports (append (reverse specs) exports) bodies))
|
||||||
|
(define (new-bodies xs)
|
||||||
|
(loop (cdr decls) imports exports (append (reverse xs) bodies)))
|
||||||
|
(syntax-case decl (export
|
||||||
|
import
|
||||||
|
begin
|
||||||
|
include
|
||||||
|
include-ci
|
||||||
|
include-library-declarations
|
||||||
|
cond-expand)
|
||||||
|
((export spec ...)
|
||||||
|
(let ()
|
||||||
|
(define (convert-spec spec)
|
||||||
|
(syntax-case spec (rename)
|
||||||
|
((rename id1 id2)
|
||||||
|
(and (identifier? #'id1)
|
||||||
|
(identifier? #'id2))
|
||||||
|
#'(rename (id1 id2)))
|
||||||
|
(id
|
||||||
|
(identifier? #'id)
|
||||||
|
#'id)
|
||||||
|
(_ (syntax-violation 'export "invalid export spec"
|
||||||
|
decl spec))))
|
||||||
|
(new-exports (map convert-spec #'(spec ...)))))
|
||||||
|
((import set ...)
|
||||||
|
(new-imports #'(set ...)))
|
||||||
|
((begin cmd-or-defn ...)
|
||||||
|
(new-bodies #'(cmd-or-defn ...)))
|
||||||
|
((include filename1 filename2 ...)
|
||||||
|
(and-map (lambda (fn)
|
||||||
|
(string? (syntax->datum fn)))
|
||||||
|
#'(filename1 filename2 ...))
|
||||||
|
(new-bodies (%read-files-for-include #'(filename1 filename2 ...)
|
||||||
|
#f
|
||||||
|
decl)))
|
||||||
|
((include-ci filename1 filename2 ...)
|
||||||
|
(and-map (lambda (fn)
|
||||||
|
(string? (syntax->datum fn)))
|
||||||
|
#'(filename1 filename2 ...))
|
||||||
|
(new-bodies (%read-files-for-include #'(filename1 filename2 ...)
|
||||||
|
#t
|
||||||
|
decl)))
|
||||||
|
((include-library-declarations filename1 filename2 ...)
|
||||||
|
(and-map (lambda (fn)
|
||||||
|
(string? (syntax->datum fn)))
|
||||||
|
#'(filename1 filename2 ...))
|
||||||
|
(splice-in (%read-files-for-include #'(filename1 filename2 ...)
|
||||||
|
#f
|
||||||
|
decl)))
|
||||||
|
((cond-expand clause1 clause2 ...)
|
||||||
|
(splice-in (%cond-expand decl)))))))))))
|
465
module/scheme/base.scm
Normal file
465
module/scheme/base.scm
Normal file
|
@ -0,0 +1,465 @@
|
||||||
|
;;; base.scm --- The R7RS base library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme base)
|
||||||
|
(export + * - / = < > <= >=
|
||||||
|
|
||||||
|
(rename serious-condition? error-object?)
|
||||||
|
(rename condition-message error-object-message)
|
||||||
|
(rename condition-irritants error-object-irritants)
|
||||||
|
|
||||||
|
read-error?
|
||||||
|
file-error?
|
||||||
|
|
||||||
|
(rename truncate-quotient quotient)
|
||||||
|
(rename truncate-remainder remainder)
|
||||||
|
(rename floor-remainder modulo)
|
||||||
|
|
||||||
|
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? caar cadr
|
||||||
|
call-with-current-continuation call-with-port call-with-values
|
||||||
|
call/cc car case cdar cddr cdr ceiling char->integer char-ready?
|
||||||
|
char<=? char<? char=? char>=? char>? char? close-input-port
|
||||||
|
close-output-port close-port complex? cond cond-expand cons
|
||||||
|
current-error-port current-input-port current-output-port
|
||||||
|
define define-record-type define-syntax define-values denominator
|
||||||
|
do dynamic-wind else eof-object eof-object? eq? equal? eqv? error
|
||||||
|
even? exact-integer-sqrt exact-integer? exact exact?
|
||||||
|
expt features floor floor-quotient floor-remainder floor/
|
||||||
|
flush-output-port for-each gcd get-output-bytevector
|
||||||
|
get-output-string guard if include include-ci inexact inexact?
|
||||||
|
input-port-open? input-port? integer->char integer? lambda lcm
|
||||||
|
length let let* let*-values let-syntax let-values letrec letrec*
|
||||||
|
letrec-syntax list list->string list->vector list-copy list-ref
|
||||||
|
list-set! list-tail list? make-bytevector make-list make-parameter
|
||||||
|
make-string make-vector map max member memq memv min
|
||||||
|
negative? newline not null? number->string number? numerator odd?
|
||||||
|
open-input-bytevector open-input-string open-output-bytevector
|
||||||
|
open-output-string or output-port-open? output-port? pair?
|
||||||
|
parameterize peek-char peek-u8 port? positive? procedure? quasiquote
|
||||||
|
quote raise raise-continuable rational? rationalize
|
||||||
|
read-bytevector read-bytevector! read-char read-line read-string
|
||||||
|
read-u8 real? reverse round set! set-car! set-cdr! square
|
||||||
|
string string->list string->number string->symbol string->utf8
|
||||||
|
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>? string? substring
|
||||||
|
symbol->string symbol=? symbol? syntax-error syntax-rules
|
||||||
|
textual-port? truncate truncate-quotient truncate-remainder truncate/
|
||||||
|
u8-ready? unless unquote unquote-splicing utf8->string values vector
|
||||||
|
vector->list vector->string vector-append vector-copy vector-copy!
|
||||||
|
vector-fill! vector-for-each vector-length vector-map vector-ref
|
||||||
|
vector-set! vector? when with-exception-handler write-bytevector
|
||||||
|
write-char write-string write-u8 zero?)
|
||||||
|
|
||||||
|
(import (rename (rnrs base)
|
||||||
|
(error r6rs-error)
|
||||||
|
(map r6rs-map)
|
||||||
|
(for-each r6rs-for-each)
|
||||||
|
(vector-map r6rs-vector-map)
|
||||||
|
(vector-for-each r6rs-vector-for-each)
|
||||||
|
(string-for-each r6rs-string-for-each)
|
||||||
|
(vector->list r6rs-vector->list)
|
||||||
|
(vector-fill! r6rs-vector-fill!))
|
||||||
|
(rename (srfi srfi-1)
|
||||||
|
(map srfi-1-map))
|
||||||
|
(rnrs control)
|
||||||
|
(rnrs exceptions)
|
||||||
|
(rnrs conditions)
|
||||||
|
(srfi srfi-6)
|
||||||
|
(srfi srfi-9)
|
||||||
|
(srfi srfi-11)
|
||||||
|
(srfi srfi-39)
|
||||||
|
(rnrs io simple)
|
||||||
|
|
||||||
|
(only (srfi srfi-43)
|
||||||
|
vector-append
|
||||||
|
vector-copy
|
||||||
|
vector-copy!
|
||||||
|
vector-fill!
|
||||||
|
vector->list)
|
||||||
|
|
||||||
|
(rename (rnrs io ports)
|
||||||
|
(flush-output-port r6rs-flush-output-port)
|
||||||
|
(binary-port? r6rs-binary-port?)
|
||||||
|
(textual-port? r6rs-textual-port?))
|
||||||
|
|
||||||
|
(rename (rnrs bytevectors)
|
||||||
|
(utf8->string r6rs-utf8->string)
|
||||||
|
(string->utf8 r6rs-string->utf8)
|
||||||
|
(bytevector-copy r6rs-bytevector-copy)
|
||||||
|
(bytevector-copy! r6rs-bytevector-copy!))
|
||||||
|
|
||||||
|
(rename (srfi srfi-13)
|
||||||
|
(string-map srfi-13-string-map)
|
||||||
|
(string-for-each srfi-13-string-for-each))
|
||||||
|
|
||||||
|
(rename (only (guile)
|
||||||
|
case-lambda
|
||||||
|
define-values
|
||||||
|
define*
|
||||||
|
list-set!
|
||||||
|
exact-integer?
|
||||||
|
floor/
|
||||||
|
floor-quotient
|
||||||
|
floor-remainder
|
||||||
|
truncate/
|
||||||
|
truncate-quotient
|
||||||
|
truncate-remainder
|
||||||
|
syntax-error
|
||||||
|
port-closed?
|
||||||
|
char-ready?
|
||||||
|
%set-port-property!
|
||||||
|
%port-property
|
||||||
|
%cond-expand-features
|
||||||
|
scm-error)
|
||||||
|
;; guile's char-ready? actually does the job of u8-ready?
|
||||||
|
(char-ready? u8-ready?))
|
||||||
|
|
||||||
|
(only (ice-9 rdelim) read-line))
|
||||||
|
|
||||||
|
(begin
|
||||||
|
(define (features)
|
||||||
|
%cond-expand-features) ; XXX also include per-module features?
|
||||||
|
|
||||||
|
(define (error msg . objs)
|
||||||
|
(apply r6rs-error #f msg objs))
|
||||||
|
|
||||||
|
(define (square z)
|
||||||
|
(* z z))
|
||||||
|
|
||||||
|
;; XXX FIXME When Guile's 'char-ready?' is fixed, this will need
|
||||||
|
;; adjustment.
|
||||||
|
(define char-ready? u8-ready?)
|
||||||
|
|
||||||
|
;; We cannot use the versions of 'map' from Guile core or SRFI-1,
|
||||||
|
;; because this map needs to (1) use 'reverse' instead of 'reverse!'
|
||||||
|
;; and (2) support lists of differing lengths.
|
||||||
|
(define map
|
||||||
|
(let ()
|
||||||
|
(define (check-procedure f)
|
||||||
|
(if (not (procedure? f))
|
||||||
|
(scm-error 'wrong-type-arg "map"
|
||||||
|
"Not a procedure: ~S" (list f) #f)))
|
||||||
|
|
||||||
|
(define (no-finite-list-error ls)
|
||||||
|
(scm-error 'wrong-type-arg "map"
|
||||||
|
"No finite list: ~S" ls #f))
|
||||||
|
|
||||||
|
;; 'min*' is like 'min', but treats #f as an exact infinity,
|
||||||
|
;; for purposes of finding the minimum length of the
|
||||||
|
;; possibly-circular lists.
|
||||||
|
(define (min* a b)
|
||||||
|
(cond ((not a) b)
|
||||||
|
((not b) a)
|
||||||
|
(else (min a b))))
|
||||||
|
|
||||||
|
(case-lambda
|
||||||
|
((f l)
|
||||||
|
(check-procedure f)
|
||||||
|
(if (not (length+ l))
|
||||||
|
(no-finite-list-error (list l)))
|
||||||
|
(let map1 ((l l) (out '()))
|
||||||
|
(if (pair? l)
|
||||||
|
(map1 (cdr l) (cons (f (car l)) out))
|
||||||
|
(reverse out))))
|
||||||
|
|
||||||
|
((f l1 l2)
|
||||||
|
(check-procedure f)
|
||||||
|
(let ((len (min* (length+ l1) (length+ l2))))
|
||||||
|
(if (not len)
|
||||||
|
(no-finite-list-error (list l1 l2)))
|
||||||
|
(let map2 ((len len) (l1 l1) (l2 l2) (out '()))
|
||||||
|
(if (zero? len)
|
||||||
|
(reverse out)
|
||||||
|
(map2 (- len 1) (cdr l1) (cdr l2)
|
||||||
|
(cons (f (car l1) (car l2))
|
||||||
|
out))))))
|
||||||
|
|
||||||
|
((f . ls)
|
||||||
|
(check-procedure f)
|
||||||
|
(let ((len (reduce min* #f (map length+ ls))))
|
||||||
|
(if (not len)
|
||||||
|
(no-finite-list-error ls))
|
||||||
|
(let mapn ((len len) (ls ls) (out '()))
|
||||||
|
(if (zero? len)
|
||||||
|
(reverse out)
|
||||||
|
(mapn (- len 1) (map cdr ls)
|
||||||
|
(cons (apply f (map car ls)) out)))))))))
|
||||||
|
|
||||||
|
(define* (vector->string v #:optional (start 0) (end (vector-length v)))
|
||||||
|
(string-tabulate (lambda (i)
|
||||||
|
(vector-ref v (+ i start)))
|
||||||
|
(- end start)))
|
||||||
|
|
||||||
|
(define* (string->vector s #:optional (start 0) (end (string-length s)))
|
||||||
|
(let ((v (make-vector (- end start))))
|
||||||
|
(let loop ((i 0) (j start))
|
||||||
|
(when (< j end)
|
||||||
|
(vector-set! v i (string-ref s j))
|
||||||
|
(loop (+ i 1) (+ j 1))))
|
||||||
|
v))
|
||||||
|
|
||||||
|
(define string-map
|
||||||
|
(case-lambda
|
||||||
|
((proc s) (srfi-13-string-map proc s))
|
||||||
|
((proc s1 s2)
|
||||||
|
(let* ((len (min (string-length s1)
|
||||||
|
(string-length s2)))
|
||||||
|
(result (make-string len)))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(string-set! result i
|
||||||
|
(proc (string-ref s1 i)
|
||||||
|
(string-ref s2 i)))
|
||||||
|
(loop (+ i 1))))
|
||||||
|
result))
|
||||||
|
((proc . strings)
|
||||||
|
(let* ((len (apply min (map string-length strings)))
|
||||||
|
(result (make-string len)))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(string-set! result i
|
||||||
|
(apply proc (map (lambda (s)
|
||||||
|
(string-ref s i))
|
||||||
|
strings)))
|
||||||
|
(loop (+ i 1))))
|
||||||
|
result))))
|
||||||
|
|
||||||
|
(define string-for-each
|
||||||
|
(case-lambda
|
||||||
|
((proc s) (srfi-13-string-for-each proc s))
|
||||||
|
((proc s1 s2)
|
||||||
|
(let ((len (min (string-length s1)
|
||||||
|
(string-length s2))))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(proc (string-ref s1 i)
|
||||||
|
(string-ref s2 i))
|
||||||
|
(loop (+ i 1))))))
|
||||||
|
((proc . strings)
|
||||||
|
(let ((len (apply min (map string-length strings))))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(apply proc (map (lambda (s)
|
||||||
|
(string-ref s i))
|
||||||
|
strings))
|
||||||
|
(loop (+ i 1))))))))
|
||||||
|
|
||||||
|
(define vector-map
|
||||||
|
(case-lambda
|
||||||
|
((proc v) (r6rs-vector-map proc v))
|
||||||
|
((proc v1 v2)
|
||||||
|
(let* ((len (min (vector-length v1)
|
||||||
|
(vector-length v2)))
|
||||||
|
(result (make-vector len)))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(vector-set! result i
|
||||||
|
(proc (vector-ref v1 i)
|
||||||
|
(vector-ref v2 i)))
|
||||||
|
(loop (+ i 1))))
|
||||||
|
result))
|
||||||
|
((proc . vs)
|
||||||
|
(let* ((len (apply min (map vector-length vs)))
|
||||||
|
(result (make-vector len)))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(vector-set! result i
|
||||||
|
(apply proc (map (lambda (v)
|
||||||
|
(vector-ref v i))
|
||||||
|
vs)))
|
||||||
|
(loop (+ i 1))))
|
||||||
|
result))))
|
||||||
|
|
||||||
|
(define vector-for-each
|
||||||
|
(case-lambda
|
||||||
|
((proc v) (r6rs-vector-for-each proc v))
|
||||||
|
((proc v1 v2)
|
||||||
|
(let ((len (min (vector-length v1)
|
||||||
|
(vector-length v2))))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(proc (vector-ref v1 i)
|
||||||
|
(vector-ref v2 i))
|
||||||
|
(loop (+ i 1))))))
|
||||||
|
((proc . vs)
|
||||||
|
(let ((len (apply min (map vector-length vs))))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(when (< i len)
|
||||||
|
(apply proc (map (lambda (v)
|
||||||
|
(vector-ref v i))
|
||||||
|
vs))
|
||||||
|
(loop (+ i 1))))))))
|
||||||
|
|
||||||
|
(define (bytevector . u8-list)
|
||||||
|
(u8-list->bytevector u8-list))
|
||||||
|
|
||||||
|
(define (bytevector-append . bvs)
|
||||||
|
(let* ((total-len (apply + (map bytevector-length bvs)))
|
||||||
|
(result (make-bytevector total-len)))
|
||||||
|
(let loop ((i 0) (bvs bvs))
|
||||||
|
(when (not (null? bvs))
|
||||||
|
(let* ((bv (car bvs))
|
||||||
|
(len (bytevector-length bv)))
|
||||||
|
(r6rs-bytevector-copy! bv 0 result i len)
|
||||||
|
(loop (+ i len) (cdr bvs)))))
|
||||||
|
result))
|
||||||
|
|
||||||
|
(define bytevector-copy
|
||||||
|
(case-lambda
|
||||||
|
((bv)
|
||||||
|
(r6rs-bytevector-copy bv))
|
||||||
|
((bv start)
|
||||||
|
(let* ((len (- (bytevector-length bv) start))
|
||||||
|
(result (make-bytevector len)))
|
||||||
|
(r6rs-bytevector-copy! bv start result 0 len)
|
||||||
|
result))
|
||||||
|
((bv start end)
|
||||||
|
(let* ((len (- end start))
|
||||||
|
(result (make-bytevector len)))
|
||||||
|
(r6rs-bytevector-copy! bv start result 0 len)
|
||||||
|
result))))
|
||||||
|
|
||||||
|
(define bytevector-copy!
|
||||||
|
(case-lambda
|
||||||
|
((to at from)
|
||||||
|
(r6rs-bytevector-copy! from 0 to at
|
||||||
|
(bytevector-length from)))
|
||||||
|
((to at from start)
|
||||||
|
(r6rs-bytevector-copy! from start to at
|
||||||
|
(- (bytevector-length from) start)))
|
||||||
|
((to at from start end)
|
||||||
|
(r6rs-bytevector-copy! from start to at
|
||||||
|
(- end start)))))
|
||||||
|
|
||||||
|
(define utf8->string
|
||||||
|
(case-lambda
|
||||||
|
((bv) (r6rs-utf8->string bv))
|
||||||
|
((bv start)
|
||||||
|
(r6rs-utf8->string (bytevector-copy bv start)))
|
||||||
|
((bv start end)
|
||||||
|
(r6rs-utf8->string (bytevector-copy bv start end)))))
|
||||||
|
|
||||||
|
(define string->utf8
|
||||||
|
(case-lambda
|
||||||
|
((s) (r6rs-string->utf8 s))
|
||||||
|
((s start)
|
||||||
|
(r6rs-string->utf8 (substring s start)))
|
||||||
|
((s start end)
|
||||||
|
(r6rs-string->utf8 (substring s start end)))))
|
||||||
|
|
||||||
|
(define (binary-port? obj)
|
||||||
|
(and (port? obj) (r6rs-binary-port? obj)))
|
||||||
|
|
||||||
|
(define (textual-port? obj)
|
||||||
|
(and (port? obj) (r6rs-textual-port? obj)))
|
||||||
|
|
||||||
|
(define* (flush-output-port #:optional (port (current-output-port)))
|
||||||
|
(r6rs-flush-output-port port))
|
||||||
|
|
||||||
|
(define (open-input-bytevector bv)
|
||||||
|
(open-bytevector-input-port bv))
|
||||||
|
|
||||||
|
(define (open-output-bytevector)
|
||||||
|
(call-with-values
|
||||||
|
(lambda () (open-bytevector-output-port))
|
||||||
|
(lambda (port proc)
|
||||||
|
(%set-port-property! port 'get-output-bytevector proc)
|
||||||
|
port)))
|
||||||
|
|
||||||
|
(define (get-output-bytevector port)
|
||||||
|
(let ((proc (%port-property port 'get-output-bytevector)))
|
||||||
|
(unless proc
|
||||||
|
(error "get-output-bytevector: port not created by open-output-bytevector"))
|
||||||
|
(proc)))
|
||||||
|
|
||||||
|
(define* (peek-u8 #:optional (port (current-input-port)))
|
||||||
|
(lookahead-u8 port))
|
||||||
|
|
||||||
|
(define* (read-u8 #:optional (port (current-input-port)))
|
||||||
|
(get-u8 port))
|
||||||
|
|
||||||
|
(define* (write-u8 byte #:optional (port (current-output-port)))
|
||||||
|
(put-u8 port byte))
|
||||||
|
|
||||||
|
(define* (read-bytevector k #:optional (port (current-input-port)))
|
||||||
|
(get-bytevector-n port k))
|
||||||
|
|
||||||
|
(define* (read-bytevector! bv
|
||||||
|
#:optional
|
||||||
|
(port (current-input-port))
|
||||||
|
(start 0)
|
||||||
|
(end (bytevector-length bv)))
|
||||||
|
(get-bytevector-n! port bv start (- end start)))
|
||||||
|
|
||||||
|
(define* (write-bytevector bv
|
||||||
|
#:optional
|
||||||
|
(port (current-output-port))
|
||||||
|
(start 0)
|
||||||
|
(end (bytevector-length bv)))
|
||||||
|
(put-bytevector port bv start (- end start)))
|
||||||
|
|
||||||
|
(define read-string
|
||||||
|
(case-lambda
|
||||||
|
((k) (get-string-n (current-input-port) k))
|
||||||
|
((k port) (get-string-n port k))))
|
||||||
|
|
||||||
|
(define write-string
|
||||||
|
(case-lambda
|
||||||
|
((s) (put-string (current-output-port) s))
|
||||||
|
((s port)
|
||||||
|
(put-string port s))
|
||||||
|
((s port start)
|
||||||
|
(put-string port s start))
|
||||||
|
((s port start end)
|
||||||
|
(put-string port s start (- end start)))))
|
||||||
|
|
||||||
|
(define write-bytevector
|
||||||
|
(case-lambda
|
||||||
|
((bv) (put-bytevector (current-output-port) bv))
|
||||||
|
((bv port)
|
||||||
|
(put-bytevector port bv))
|
||||||
|
((bv port start)
|
||||||
|
(put-bytevector port bv start))
|
||||||
|
((bv port start end)
|
||||||
|
(put-bytevector port bv start (- end start)))))
|
||||||
|
|
||||||
|
(define (input-port-open? port)
|
||||||
|
(unless (input-port? port)
|
||||||
|
(error "input-port-open?: not an input port" port))
|
||||||
|
(not (port-closed? port)))
|
||||||
|
|
||||||
|
(define (output-port-open? port)
|
||||||
|
(unless (output-port? port)
|
||||||
|
(error "output-port-open?: not an output port" port))
|
||||||
|
(not (port-closed? port)))
|
||||||
|
|
||||||
|
(define (read-error? obj)
|
||||||
|
(or (lexical-violation? obj)
|
||||||
|
(i/o-read-error? obj)))
|
||||||
|
|
||||||
|
(define (file-error? obj)
|
||||||
|
(or (i/o-file-protection-error? obj)
|
||||||
|
(i/o-file-is-read-only-error? obj)
|
||||||
|
(i/o-file-already-exists-error? obj)
|
||||||
|
(i/o-file-does-not-exist-error? obj)
|
||||||
|
(i/o-filename-error? obj))))) ; XXX is this needed?
|
22
module/scheme/case-lambda.scm
Normal file
22
module/scheme/case-lambda.scm
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
;;; case-lambda.scm --- The R7RS case-lambda library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme case-lambda)
|
||||||
|
(export case-lambda)
|
||||||
|
(import (only (guile) case-lambda)))
|
521
module/scheme/char.scm
Normal file
521
module/scheme/char.scm
Normal file
|
@ -0,0 +1,521 @@
|
||||||
|
;;; char.scm --- The R7RS char library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme char)
|
||||||
|
(export char-alphabetic?
|
||||||
|
char-ci<?
|
||||||
|
char-ci>=?
|
||||||
|
char-downcase
|
||||||
|
char-lower-case?
|
||||||
|
char-upcase
|
||||||
|
char-whitespace?
|
||||||
|
string-ci<=?
|
||||||
|
string-ci=?
|
||||||
|
string-ci>?
|
||||||
|
string-foldcase
|
||||||
|
char-ci<=?
|
||||||
|
char-ci=?
|
||||||
|
char-ci>?
|
||||||
|
char-foldcase
|
||||||
|
char-numeric?
|
||||||
|
char-upper-case?
|
||||||
|
digit-value
|
||||||
|
string-ci<?
|
||||||
|
string-ci>=?
|
||||||
|
string-downcase
|
||||||
|
string-upcase)
|
||||||
|
(import (scheme base)
|
||||||
|
(rnrs unicode))
|
||||||
|
(begin
|
||||||
|
(define digit-value
|
||||||
|
(let* ((digit-table
|
||||||
|
;; Derived from http://www.unicode.org/Public/6.3.0/ucd/extracted/DerivedNumericValues.txt
|
||||||
|
#((#x00030 . 0) ; DIGIT ZERO
|
||||||
|
(#x00031 . 1) ; DIGIT ONE
|
||||||
|
(#x00032 . 2) ; DIGIT TWO
|
||||||
|
(#x00033 . 3) ; DIGIT THREE
|
||||||
|
(#x00034 . 4) ; DIGIT FOUR
|
||||||
|
(#x00035 . 5) ; DIGIT FIVE
|
||||||
|
(#x00036 . 6) ; DIGIT SIX
|
||||||
|
(#x00037 . 7) ; DIGIT SEVEN
|
||||||
|
(#x00038 . 8) ; DIGIT EIGHT
|
||||||
|
(#x00039 . 9) ; DIGIT NINE
|
||||||
|
(#x00660 . 0) ; ARABIC-INDIC DIGIT ZERO
|
||||||
|
(#x00661 . 1) ; ARABIC-INDIC DIGIT ONE
|
||||||
|
(#x00662 . 2) ; ARABIC-INDIC DIGIT TWO
|
||||||
|
(#x00663 . 3) ; ARABIC-INDIC DIGIT THREE
|
||||||
|
(#x00664 . 4) ; ARABIC-INDIC DIGIT FOUR
|
||||||
|
(#x00665 . 5) ; ARABIC-INDIC DIGIT FIVE
|
||||||
|
(#x00666 . 6) ; ARABIC-INDIC DIGIT SIX
|
||||||
|
(#x00667 . 7) ; ARABIC-INDIC DIGIT SEVEN
|
||||||
|
(#x00668 . 8) ; ARABIC-INDIC DIGIT EIGHT
|
||||||
|
(#x00669 . 9) ; ARABIC-INDIC DIGIT NINE
|
||||||
|
(#x006F0 . 0) ; EXTENDED ARABIC-INDIC DIGIT ZERO
|
||||||
|
(#x006F1 . 1) ; EXTENDED ARABIC-INDIC DIGIT ONE
|
||||||
|
(#x006F2 . 2) ; EXTENDED ARABIC-INDIC DIGIT TWO
|
||||||
|
(#x006F3 . 3) ; EXTENDED ARABIC-INDIC DIGIT THREE
|
||||||
|
(#x006F4 . 4) ; EXTENDED ARABIC-INDIC DIGIT FOUR
|
||||||
|
(#x006F5 . 5) ; EXTENDED ARABIC-INDIC DIGIT FIVE
|
||||||
|
(#x006F6 . 6) ; EXTENDED ARABIC-INDIC DIGIT SIX
|
||||||
|
(#x006F7 . 7) ; EXTENDED ARABIC-INDIC DIGIT SEVEN
|
||||||
|
(#x006F8 . 8) ; EXTENDED ARABIC-INDIC DIGIT EIGHT
|
||||||
|
(#x006F9 . 9) ; EXTENDED ARABIC-INDIC DIGIT NINE
|
||||||
|
(#x007C0 . 0) ; NKO DIGIT ZERO
|
||||||
|
(#x007C1 . 1) ; NKO DIGIT ONE
|
||||||
|
(#x007C2 . 2) ; NKO DIGIT TWO
|
||||||
|
(#x007C3 . 3) ; NKO DIGIT THREE
|
||||||
|
(#x007C4 . 4) ; NKO DIGIT FOUR
|
||||||
|
(#x007C5 . 5) ; NKO DIGIT FIVE
|
||||||
|
(#x007C6 . 6) ; NKO DIGIT SIX
|
||||||
|
(#x007C7 . 7) ; NKO DIGIT SEVEN
|
||||||
|
(#x007C8 . 8) ; NKO DIGIT EIGHT
|
||||||
|
(#x007C9 . 9) ; NKO DIGIT NINE
|
||||||
|
(#x00966 . 0) ; DEVANAGARI DIGIT ZERO
|
||||||
|
(#x00967 . 1) ; DEVANAGARI DIGIT ONE
|
||||||
|
(#x00968 . 2) ; DEVANAGARI DIGIT TWO
|
||||||
|
(#x00969 . 3) ; DEVANAGARI DIGIT THREE
|
||||||
|
(#x0096A . 4) ; DEVANAGARI DIGIT FOUR
|
||||||
|
(#x0096B . 5) ; DEVANAGARI DIGIT FIVE
|
||||||
|
(#x0096C . 6) ; DEVANAGARI DIGIT SIX
|
||||||
|
(#x0096D . 7) ; DEVANAGARI DIGIT SEVEN
|
||||||
|
(#x0096E . 8) ; DEVANAGARI DIGIT EIGHT
|
||||||
|
(#x0096F . 9) ; DEVANAGARI DIGIT NINE
|
||||||
|
(#x009E6 . 0) ; BENGALI DIGIT ZERO
|
||||||
|
(#x009E7 . 1) ; BENGALI DIGIT ONE
|
||||||
|
(#x009E8 . 2) ; BENGALI DIGIT TWO
|
||||||
|
(#x009E9 . 3) ; BENGALI DIGIT THREE
|
||||||
|
(#x009EA . 4) ; BENGALI DIGIT FOUR
|
||||||
|
(#x009EB . 5) ; BENGALI DIGIT FIVE
|
||||||
|
(#x009EC . 6) ; BENGALI DIGIT SIX
|
||||||
|
(#x009ED . 7) ; BENGALI DIGIT SEVEN
|
||||||
|
(#x009EE . 8) ; BENGALI DIGIT EIGHT
|
||||||
|
(#x009EF . 9) ; BENGALI DIGIT NINE
|
||||||
|
(#x00A66 . 0) ; GURMUKHI DIGIT ZERO
|
||||||
|
(#x00A67 . 1) ; GURMUKHI DIGIT ONE
|
||||||
|
(#x00A68 . 2) ; GURMUKHI DIGIT TWO
|
||||||
|
(#x00A69 . 3) ; GURMUKHI DIGIT THREE
|
||||||
|
(#x00A6A . 4) ; GURMUKHI DIGIT FOUR
|
||||||
|
(#x00A6B . 5) ; GURMUKHI DIGIT FIVE
|
||||||
|
(#x00A6C . 6) ; GURMUKHI DIGIT SIX
|
||||||
|
(#x00A6D . 7) ; GURMUKHI DIGIT SEVEN
|
||||||
|
(#x00A6E . 8) ; GURMUKHI DIGIT EIGHT
|
||||||
|
(#x00A6F . 9) ; GURMUKHI DIGIT NINE
|
||||||
|
(#x00AE6 . 0) ; GUJARATI DIGIT ZERO
|
||||||
|
(#x00AE7 . 1) ; GUJARATI DIGIT ONE
|
||||||
|
(#x00AE8 . 2) ; GUJARATI DIGIT TWO
|
||||||
|
(#x00AE9 . 3) ; GUJARATI DIGIT THREE
|
||||||
|
(#x00AEA . 4) ; GUJARATI DIGIT FOUR
|
||||||
|
(#x00AEB . 5) ; GUJARATI DIGIT FIVE
|
||||||
|
(#x00AEC . 6) ; GUJARATI DIGIT SIX
|
||||||
|
(#x00AED . 7) ; GUJARATI DIGIT SEVEN
|
||||||
|
(#x00AEE . 8) ; GUJARATI DIGIT EIGHT
|
||||||
|
(#x00AEF . 9) ; GUJARATI DIGIT NINE
|
||||||
|
(#x00B66 . 0) ; ORIYA DIGIT ZERO
|
||||||
|
(#x00B67 . 1) ; ORIYA DIGIT ONE
|
||||||
|
(#x00B68 . 2) ; ORIYA DIGIT TWO
|
||||||
|
(#x00B69 . 3) ; ORIYA DIGIT THREE
|
||||||
|
(#x00B6A . 4) ; ORIYA DIGIT FOUR
|
||||||
|
(#x00B6B . 5) ; ORIYA DIGIT FIVE
|
||||||
|
(#x00B6C . 6) ; ORIYA DIGIT SIX
|
||||||
|
(#x00B6D . 7) ; ORIYA DIGIT SEVEN
|
||||||
|
(#x00B6E . 8) ; ORIYA DIGIT EIGHT
|
||||||
|
(#x00B6F . 9) ; ORIYA DIGIT NINE
|
||||||
|
(#x00BE6 . 0) ; TAMIL DIGIT ZERO
|
||||||
|
(#x00BE7 . 1) ; TAMIL DIGIT ONE
|
||||||
|
(#x00BE8 . 2) ; TAMIL DIGIT TWO
|
||||||
|
(#x00BE9 . 3) ; TAMIL DIGIT THREE
|
||||||
|
(#x00BEA . 4) ; TAMIL DIGIT FOUR
|
||||||
|
(#x00BEB . 5) ; TAMIL DIGIT FIVE
|
||||||
|
(#x00BEC . 6) ; TAMIL DIGIT SIX
|
||||||
|
(#x00BED . 7) ; TAMIL DIGIT SEVEN
|
||||||
|
(#x00BEE . 8) ; TAMIL DIGIT EIGHT
|
||||||
|
(#x00BEF . 9) ; TAMIL DIGIT NINE
|
||||||
|
(#x00C66 . 0) ; TELUGU DIGIT ZERO
|
||||||
|
(#x00C67 . 1) ; TELUGU DIGIT ONE
|
||||||
|
(#x00C68 . 2) ; TELUGU DIGIT TWO
|
||||||
|
(#x00C69 . 3) ; TELUGU DIGIT THREE
|
||||||
|
(#x00C6A . 4) ; TELUGU DIGIT FOUR
|
||||||
|
(#x00C6B . 5) ; TELUGU DIGIT FIVE
|
||||||
|
(#x00C6C . 6) ; TELUGU DIGIT SIX
|
||||||
|
(#x00C6D . 7) ; TELUGU DIGIT SEVEN
|
||||||
|
(#x00C6E . 8) ; TELUGU DIGIT EIGHT
|
||||||
|
(#x00C6F . 9) ; TELUGU DIGIT NINE
|
||||||
|
(#x00CE6 . 0) ; KANNADA DIGIT ZERO
|
||||||
|
(#x00CE7 . 1) ; KANNADA DIGIT ONE
|
||||||
|
(#x00CE8 . 2) ; KANNADA DIGIT TWO
|
||||||
|
(#x00CE9 . 3) ; KANNADA DIGIT THREE
|
||||||
|
(#x00CEA . 4) ; KANNADA DIGIT FOUR
|
||||||
|
(#x00CEB . 5) ; KANNADA DIGIT FIVE
|
||||||
|
(#x00CEC . 6) ; KANNADA DIGIT SIX
|
||||||
|
(#x00CED . 7) ; KANNADA DIGIT SEVEN
|
||||||
|
(#x00CEE . 8) ; KANNADA DIGIT EIGHT
|
||||||
|
(#x00CEF . 9) ; KANNADA DIGIT NINE
|
||||||
|
(#x00D66 . 0) ; MALAYALAM DIGIT ZERO
|
||||||
|
(#x00D67 . 1) ; MALAYALAM DIGIT ONE
|
||||||
|
(#x00D68 . 2) ; MALAYALAM DIGIT TWO
|
||||||
|
(#x00D69 . 3) ; MALAYALAM DIGIT THREE
|
||||||
|
(#x00D6A . 4) ; MALAYALAM DIGIT FOUR
|
||||||
|
(#x00D6B . 5) ; MALAYALAM DIGIT FIVE
|
||||||
|
(#x00D6C . 6) ; MALAYALAM DIGIT SIX
|
||||||
|
(#x00D6D . 7) ; MALAYALAM DIGIT SEVEN
|
||||||
|
(#x00D6E . 8) ; MALAYALAM DIGIT EIGHT
|
||||||
|
(#x00D6F . 9) ; MALAYALAM DIGIT NINE
|
||||||
|
(#x00E50 . 0) ; THAI DIGIT ZERO
|
||||||
|
(#x00E51 . 1) ; THAI DIGIT ONE
|
||||||
|
(#x00E52 . 2) ; THAI DIGIT TWO
|
||||||
|
(#x00E53 . 3) ; THAI DIGIT THREE
|
||||||
|
(#x00E54 . 4) ; THAI DIGIT FOUR
|
||||||
|
(#x00E55 . 5) ; THAI DIGIT FIVE
|
||||||
|
(#x00E56 . 6) ; THAI DIGIT SIX
|
||||||
|
(#x00E57 . 7) ; THAI DIGIT SEVEN
|
||||||
|
(#x00E58 . 8) ; THAI DIGIT EIGHT
|
||||||
|
(#x00E59 . 9) ; THAI DIGIT NINE
|
||||||
|
(#x00ED0 . 0) ; LAO DIGIT ZERO
|
||||||
|
(#x00ED1 . 1) ; LAO DIGIT ONE
|
||||||
|
(#x00ED2 . 2) ; LAO DIGIT TWO
|
||||||
|
(#x00ED3 . 3) ; LAO DIGIT THREE
|
||||||
|
(#x00ED4 . 4) ; LAO DIGIT FOUR
|
||||||
|
(#x00ED5 . 5) ; LAO DIGIT FIVE
|
||||||
|
(#x00ED6 . 6) ; LAO DIGIT SIX
|
||||||
|
(#x00ED7 . 7) ; LAO DIGIT SEVEN
|
||||||
|
(#x00ED8 . 8) ; LAO DIGIT EIGHT
|
||||||
|
(#x00ED9 . 9) ; LAO DIGIT NINE
|
||||||
|
(#x00F20 . 0) ; TIBETAN DIGIT ZERO
|
||||||
|
(#x00F21 . 1) ; TIBETAN DIGIT ONE
|
||||||
|
(#x00F22 . 2) ; TIBETAN DIGIT TWO
|
||||||
|
(#x00F23 . 3) ; TIBETAN DIGIT THREE
|
||||||
|
(#x00F24 . 4) ; TIBETAN DIGIT FOUR
|
||||||
|
(#x00F25 . 5) ; TIBETAN DIGIT FIVE
|
||||||
|
(#x00F26 . 6) ; TIBETAN DIGIT SIX
|
||||||
|
(#x00F27 . 7) ; TIBETAN DIGIT SEVEN
|
||||||
|
(#x00F28 . 8) ; TIBETAN DIGIT EIGHT
|
||||||
|
(#x00F29 . 9) ; TIBETAN DIGIT NINE
|
||||||
|
(#x01040 . 0) ; MYANMAR DIGIT ZERO
|
||||||
|
(#x01041 . 1) ; MYANMAR DIGIT ONE
|
||||||
|
(#x01042 . 2) ; MYANMAR DIGIT TWO
|
||||||
|
(#x01043 . 3) ; MYANMAR DIGIT THREE
|
||||||
|
(#x01044 . 4) ; MYANMAR DIGIT FOUR
|
||||||
|
(#x01045 . 5) ; MYANMAR DIGIT FIVE
|
||||||
|
(#x01046 . 6) ; MYANMAR DIGIT SIX
|
||||||
|
(#x01047 . 7) ; MYANMAR DIGIT SEVEN
|
||||||
|
(#x01048 . 8) ; MYANMAR DIGIT EIGHT
|
||||||
|
(#x01049 . 9) ; MYANMAR DIGIT NINE
|
||||||
|
(#x01090 . 0) ; MYANMAR SHAN DIGIT ZERO
|
||||||
|
(#x01091 . 1) ; MYANMAR SHAN DIGIT ONE
|
||||||
|
(#x01092 . 2) ; MYANMAR SHAN DIGIT TWO
|
||||||
|
(#x01093 . 3) ; MYANMAR SHAN DIGIT THREE
|
||||||
|
(#x01094 . 4) ; MYANMAR SHAN DIGIT FOUR
|
||||||
|
(#x01095 . 5) ; MYANMAR SHAN DIGIT FIVE
|
||||||
|
(#x01096 . 6) ; MYANMAR SHAN DIGIT SIX
|
||||||
|
(#x01097 . 7) ; MYANMAR SHAN DIGIT SEVEN
|
||||||
|
(#x01098 . 8) ; MYANMAR SHAN DIGIT EIGHT
|
||||||
|
(#x01099 . 9) ; MYANMAR SHAN DIGIT NINE
|
||||||
|
(#x017E0 . 0) ; KHMER DIGIT ZERO
|
||||||
|
(#x017E1 . 1) ; KHMER DIGIT ONE
|
||||||
|
(#x017E2 . 2) ; KHMER DIGIT TWO
|
||||||
|
(#x017E3 . 3) ; KHMER DIGIT THREE
|
||||||
|
(#x017E4 . 4) ; KHMER DIGIT FOUR
|
||||||
|
(#x017E5 . 5) ; KHMER DIGIT FIVE
|
||||||
|
(#x017E6 . 6) ; KHMER DIGIT SIX
|
||||||
|
(#x017E7 . 7) ; KHMER DIGIT SEVEN
|
||||||
|
(#x017E8 . 8) ; KHMER DIGIT EIGHT
|
||||||
|
(#x017E9 . 9) ; KHMER DIGIT NINE
|
||||||
|
(#x01810 . 0) ; MONGOLIAN DIGIT ZERO
|
||||||
|
(#x01811 . 1) ; MONGOLIAN DIGIT ONE
|
||||||
|
(#x01812 . 2) ; MONGOLIAN DIGIT TWO
|
||||||
|
(#x01813 . 3) ; MONGOLIAN DIGIT THREE
|
||||||
|
(#x01814 . 4) ; MONGOLIAN DIGIT FOUR
|
||||||
|
(#x01815 . 5) ; MONGOLIAN DIGIT FIVE
|
||||||
|
(#x01816 . 6) ; MONGOLIAN DIGIT SIX
|
||||||
|
(#x01817 . 7) ; MONGOLIAN DIGIT SEVEN
|
||||||
|
(#x01818 . 8) ; MONGOLIAN DIGIT EIGHT
|
||||||
|
(#x01819 . 9) ; MONGOLIAN DIGIT NINE
|
||||||
|
(#x01946 . 0) ; LIMBU DIGIT ZERO
|
||||||
|
(#x01947 . 1) ; LIMBU DIGIT ONE
|
||||||
|
(#x01948 . 2) ; LIMBU DIGIT TWO
|
||||||
|
(#x01949 . 3) ; LIMBU DIGIT THREE
|
||||||
|
(#x0194A . 4) ; LIMBU DIGIT FOUR
|
||||||
|
(#x0194B . 5) ; LIMBU DIGIT FIVE
|
||||||
|
(#x0194C . 6) ; LIMBU DIGIT SIX
|
||||||
|
(#x0194D . 7) ; LIMBU DIGIT SEVEN
|
||||||
|
(#x0194E . 8) ; LIMBU DIGIT EIGHT
|
||||||
|
(#x0194F . 9) ; LIMBU DIGIT NINE
|
||||||
|
(#x019D0 . 0) ; NEW TAI LUE DIGIT ZERO
|
||||||
|
(#x019D1 . 1) ; NEW TAI LUE DIGIT ONE
|
||||||
|
(#x019D2 . 2) ; NEW TAI LUE DIGIT TWO
|
||||||
|
(#x019D3 . 3) ; NEW TAI LUE DIGIT THREE
|
||||||
|
(#x019D4 . 4) ; NEW TAI LUE DIGIT FOUR
|
||||||
|
(#x019D5 . 5) ; NEW TAI LUE DIGIT FIVE
|
||||||
|
(#x019D6 . 6) ; NEW TAI LUE DIGIT SIX
|
||||||
|
(#x019D7 . 7) ; NEW TAI LUE DIGIT SEVEN
|
||||||
|
(#x019D8 . 8) ; NEW TAI LUE DIGIT EIGHT
|
||||||
|
(#x019D9 . 9) ; NEW TAI LUE DIGIT NINE
|
||||||
|
(#x01A80 . 0) ; TAI THAM HORA DIGIT ZERO
|
||||||
|
(#x01A81 . 1) ; TAI THAM HORA DIGIT ONE
|
||||||
|
(#x01A82 . 2) ; TAI THAM HORA DIGIT TWO
|
||||||
|
(#x01A83 . 3) ; TAI THAM HORA DIGIT THREE
|
||||||
|
(#x01A84 . 4) ; TAI THAM HORA DIGIT FOUR
|
||||||
|
(#x01A85 . 5) ; TAI THAM HORA DIGIT FIVE
|
||||||
|
(#x01A86 . 6) ; TAI THAM HORA DIGIT SIX
|
||||||
|
(#x01A87 . 7) ; TAI THAM HORA DIGIT SEVEN
|
||||||
|
(#x01A88 . 8) ; TAI THAM HORA DIGIT EIGHT
|
||||||
|
(#x01A89 . 9) ; TAI THAM HORA DIGIT NINE
|
||||||
|
(#x01A90 . 0) ; TAI THAM THAM DIGIT ZERO
|
||||||
|
(#x01A91 . 1) ; TAI THAM THAM DIGIT ONE
|
||||||
|
(#x01A92 . 2) ; TAI THAM THAM DIGIT TWO
|
||||||
|
(#x01A93 . 3) ; TAI THAM THAM DIGIT THREE
|
||||||
|
(#x01A94 . 4) ; TAI THAM THAM DIGIT FOUR
|
||||||
|
(#x01A95 . 5) ; TAI THAM THAM DIGIT FIVE
|
||||||
|
(#x01A96 . 6) ; TAI THAM THAM DIGIT SIX
|
||||||
|
(#x01A97 . 7) ; TAI THAM THAM DIGIT SEVEN
|
||||||
|
(#x01A98 . 8) ; TAI THAM THAM DIGIT EIGHT
|
||||||
|
(#x01A99 . 9) ; TAI THAM THAM DIGIT NINE
|
||||||
|
(#x01B50 . 0) ; BALINESE DIGIT ZERO
|
||||||
|
(#x01B51 . 1) ; BALINESE DIGIT ONE
|
||||||
|
(#x01B52 . 2) ; BALINESE DIGIT TWO
|
||||||
|
(#x01B53 . 3) ; BALINESE DIGIT THREE
|
||||||
|
(#x01B54 . 4) ; BALINESE DIGIT FOUR
|
||||||
|
(#x01B55 . 5) ; BALINESE DIGIT FIVE
|
||||||
|
(#x01B56 . 6) ; BALINESE DIGIT SIX
|
||||||
|
(#x01B57 . 7) ; BALINESE DIGIT SEVEN
|
||||||
|
(#x01B58 . 8) ; BALINESE DIGIT EIGHT
|
||||||
|
(#x01B59 . 9) ; BALINESE DIGIT NINE
|
||||||
|
(#x01BB0 . 0) ; SUNDANESE DIGIT ZERO
|
||||||
|
(#x01BB1 . 1) ; SUNDANESE DIGIT ONE
|
||||||
|
(#x01BB2 . 2) ; SUNDANESE DIGIT TWO
|
||||||
|
(#x01BB3 . 3) ; SUNDANESE DIGIT THREE
|
||||||
|
(#x01BB4 . 4) ; SUNDANESE DIGIT FOUR
|
||||||
|
(#x01BB5 . 5) ; SUNDANESE DIGIT FIVE
|
||||||
|
(#x01BB6 . 6) ; SUNDANESE DIGIT SIX
|
||||||
|
(#x01BB7 . 7) ; SUNDANESE DIGIT SEVEN
|
||||||
|
(#x01BB8 . 8) ; SUNDANESE DIGIT EIGHT
|
||||||
|
(#x01BB9 . 9) ; SUNDANESE DIGIT NINE
|
||||||
|
(#x01C40 . 0) ; LEPCHA DIGIT ZERO
|
||||||
|
(#x01C41 . 1) ; LEPCHA DIGIT ONE
|
||||||
|
(#x01C42 . 2) ; LEPCHA DIGIT TWO
|
||||||
|
(#x01C43 . 3) ; LEPCHA DIGIT THREE
|
||||||
|
(#x01C44 . 4) ; LEPCHA DIGIT FOUR
|
||||||
|
(#x01C45 . 5) ; LEPCHA DIGIT FIVE
|
||||||
|
(#x01C46 . 6) ; LEPCHA DIGIT SIX
|
||||||
|
(#x01C47 . 7) ; LEPCHA DIGIT SEVEN
|
||||||
|
(#x01C48 . 8) ; LEPCHA DIGIT EIGHT
|
||||||
|
(#x01C49 . 9) ; LEPCHA DIGIT NINE
|
||||||
|
(#x01C50 . 0) ; OL CHIKI DIGIT ZERO
|
||||||
|
(#x01C51 . 1) ; OL CHIKI DIGIT ONE
|
||||||
|
(#x01C52 . 2) ; OL CHIKI DIGIT TWO
|
||||||
|
(#x01C53 . 3) ; OL CHIKI DIGIT THREE
|
||||||
|
(#x01C54 . 4) ; OL CHIKI DIGIT FOUR
|
||||||
|
(#x01C55 . 5) ; OL CHIKI DIGIT FIVE
|
||||||
|
(#x01C56 . 6) ; OL CHIKI DIGIT SIX
|
||||||
|
(#x01C57 . 7) ; OL CHIKI DIGIT SEVEN
|
||||||
|
(#x01C58 . 8) ; OL CHIKI DIGIT EIGHT
|
||||||
|
(#x01C59 . 9) ; OL CHIKI DIGIT NINE
|
||||||
|
(#x0A620 . 0) ; VAI DIGIT ZERO
|
||||||
|
(#x0A621 . 1) ; VAI DIGIT ONE
|
||||||
|
(#x0A622 . 2) ; VAI DIGIT TWO
|
||||||
|
(#x0A623 . 3) ; VAI DIGIT THREE
|
||||||
|
(#x0A624 . 4) ; VAI DIGIT FOUR
|
||||||
|
(#x0A625 . 5) ; VAI DIGIT FIVE
|
||||||
|
(#x0A626 . 6) ; VAI DIGIT SIX
|
||||||
|
(#x0A627 . 7) ; VAI DIGIT SEVEN
|
||||||
|
(#x0A628 . 8) ; VAI DIGIT EIGHT
|
||||||
|
(#x0A629 . 9) ; VAI DIGIT NINE
|
||||||
|
(#x0A8D0 . 0) ; SAURASHTRA DIGIT ZERO
|
||||||
|
(#x0A8D1 . 1) ; SAURASHTRA DIGIT ONE
|
||||||
|
(#x0A8D2 . 2) ; SAURASHTRA DIGIT TWO
|
||||||
|
(#x0A8D3 . 3) ; SAURASHTRA DIGIT THREE
|
||||||
|
(#x0A8D4 . 4) ; SAURASHTRA DIGIT FOUR
|
||||||
|
(#x0A8D5 . 5) ; SAURASHTRA DIGIT FIVE
|
||||||
|
(#x0A8D6 . 6) ; SAURASHTRA DIGIT SIX
|
||||||
|
(#x0A8D7 . 7) ; SAURASHTRA DIGIT SEVEN
|
||||||
|
(#x0A8D8 . 8) ; SAURASHTRA DIGIT EIGHT
|
||||||
|
(#x0A8D9 . 9) ; SAURASHTRA DIGIT NINE
|
||||||
|
(#x0A900 . 0) ; KAYAH LI DIGIT ZERO
|
||||||
|
(#x0A901 . 1) ; KAYAH LI DIGIT ONE
|
||||||
|
(#x0A902 . 2) ; KAYAH LI DIGIT TWO
|
||||||
|
(#x0A903 . 3) ; KAYAH LI DIGIT THREE
|
||||||
|
(#x0A904 . 4) ; KAYAH LI DIGIT FOUR
|
||||||
|
(#x0A905 . 5) ; KAYAH LI DIGIT FIVE
|
||||||
|
(#x0A906 . 6) ; KAYAH LI DIGIT SIX
|
||||||
|
(#x0A907 . 7) ; KAYAH LI DIGIT SEVEN
|
||||||
|
(#x0A908 . 8) ; KAYAH LI DIGIT EIGHT
|
||||||
|
(#x0A909 . 9) ; KAYAH LI DIGIT NINE
|
||||||
|
(#x0A9D0 . 0) ; JAVANESE DIGIT ZERO
|
||||||
|
(#x0A9D1 . 1) ; JAVANESE DIGIT ONE
|
||||||
|
(#x0A9D2 . 2) ; JAVANESE DIGIT TWO
|
||||||
|
(#x0A9D3 . 3) ; JAVANESE DIGIT THREE
|
||||||
|
(#x0A9D4 . 4) ; JAVANESE DIGIT FOUR
|
||||||
|
(#x0A9D5 . 5) ; JAVANESE DIGIT FIVE
|
||||||
|
(#x0A9D6 . 6) ; JAVANESE DIGIT SIX
|
||||||
|
(#x0A9D7 . 7) ; JAVANESE DIGIT SEVEN
|
||||||
|
(#x0A9D8 . 8) ; JAVANESE DIGIT EIGHT
|
||||||
|
(#x0A9D9 . 9) ; JAVANESE DIGIT NINE
|
||||||
|
(#x0AA50 . 0) ; CHAM DIGIT ZERO
|
||||||
|
(#x0AA51 . 1) ; CHAM DIGIT ONE
|
||||||
|
(#x0AA52 . 2) ; CHAM DIGIT TWO
|
||||||
|
(#x0AA53 . 3) ; CHAM DIGIT THREE
|
||||||
|
(#x0AA54 . 4) ; CHAM DIGIT FOUR
|
||||||
|
(#x0AA55 . 5) ; CHAM DIGIT FIVE
|
||||||
|
(#x0AA56 . 6) ; CHAM DIGIT SIX
|
||||||
|
(#x0AA57 . 7) ; CHAM DIGIT SEVEN
|
||||||
|
(#x0AA58 . 8) ; CHAM DIGIT EIGHT
|
||||||
|
(#x0AA59 . 9) ; CHAM DIGIT NINE
|
||||||
|
(#x0ABF0 . 0) ; MEETEI MAYEK DIGIT ZERO
|
||||||
|
(#x0ABF1 . 1) ; MEETEI MAYEK DIGIT ONE
|
||||||
|
(#x0ABF2 . 2) ; MEETEI MAYEK DIGIT TWO
|
||||||
|
(#x0ABF3 . 3) ; MEETEI MAYEK DIGIT THREE
|
||||||
|
(#x0ABF4 . 4) ; MEETEI MAYEK DIGIT FOUR
|
||||||
|
(#x0ABF5 . 5) ; MEETEI MAYEK DIGIT FIVE
|
||||||
|
(#x0ABF6 . 6) ; MEETEI MAYEK DIGIT SIX
|
||||||
|
(#x0ABF7 . 7) ; MEETEI MAYEK DIGIT SEVEN
|
||||||
|
(#x0ABF8 . 8) ; MEETEI MAYEK DIGIT EIGHT
|
||||||
|
(#x0ABF9 . 9) ; MEETEI MAYEK DIGIT NINE
|
||||||
|
(#x0FF10 . 0) ; FULLWIDTH DIGIT ZERO
|
||||||
|
(#x0FF11 . 1) ; FULLWIDTH DIGIT ONE
|
||||||
|
(#x0FF12 . 2) ; FULLWIDTH DIGIT TWO
|
||||||
|
(#x0FF13 . 3) ; FULLWIDTH DIGIT THREE
|
||||||
|
(#x0FF14 . 4) ; FULLWIDTH DIGIT FOUR
|
||||||
|
(#x0FF15 . 5) ; FULLWIDTH DIGIT FIVE
|
||||||
|
(#x0FF16 . 6) ; FULLWIDTH DIGIT SIX
|
||||||
|
(#x0FF17 . 7) ; FULLWIDTH DIGIT SEVEN
|
||||||
|
(#x0FF18 . 8) ; FULLWIDTH DIGIT EIGHT
|
||||||
|
(#x0FF19 . 9) ; FULLWIDTH DIGIT NINE
|
||||||
|
(#x104A0 . 0) ; OSMANYA DIGIT ZERO
|
||||||
|
(#x104A1 . 1) ; OSMANYA DIGIT ONE
|
||||||
|
(#x104A2 . 2) ; OSMANYA DIGIT TWO
|
||||||
|
(#x104A3 . 3) ; OSMANYA DIGIT THREE
|
||||||
|
(#x104A4 . 4) ; OSMANYA DIGIT FOUR
|
||||||
|
(#x104A5 . 5) ; OSMANYA DIGIT FIVE
|
||||||
|
(#x104A6 . 6) ; OSMANYA DIGIT SIX
|
||||||
|
(#x104A7 . 7) ; OSMANYA DIGIT SEVEN
|
||||||
|
(#x104A8 . 8) ; OSMANYA DIGIT EIGHT
|
||||||
|
(#x104A9 . 9) ; OSMANYA DIGIT NINE
|
||||||
|
(#x11066 . 0) ; BRAHMI DIGIT ZERO
|
||||||
|
(#x11067 . 1) ; BRAHMI DIGIT ONE
|
||||||
|
(#x11068 . 2) ; BRAHMI DIGIT TWO
|
||||||
|
(#x11069 . 3) ; BRAHMI DIGIT THREE
|
||||||
|
(#x1106A . 4) ; BRAHMI DIGIT FOUR
|
||||||
|
(#x1106B . 5) ; BRAHMI DIGIT FIVE
|
||||||
|
(#x1106C . 6) ; BRAHMI DIGIT SIX
|
||||||
|
(#x1106D . 7) ; BRAHMI DIGIT SEVEN
|
||||||
|
(#x1106E . 8) ; BRAHMI DIGIT EIGHT
|
||||||
|
(#x1106F . 9) ; BRAHMI DIGIT NINE
|
||||||
|
(#x110F0 . 0) ; SORA SOMPENG DIGIT ZERO
|
||||||
|
(#x110F1 . 1) ; SORA SOMPENG DIGIT ONE
|
||||||
|
(#x110F2 . 2) ; SORA SOMPENG DIGIT TWO
|
||||||
|
(#x110F3 . 3) ; SORA SOMPENG DIGIT THREE
|
||||||
|
(#x110F4 . 4) ; SORA SOMPENG DIGIT FOUR
|
||||||
|
(#x110F5 . 5) ; SORA SOMPENG DIGIT FIVE
|
||||||
|
(#x110F6 . 6) ; SORA SOMPENG DIGIT SIX
|
||||||
|
(#x110F7 . 7) ; SORA SOMPENG DIGIT SEVEN
|
||||||
|
(#x110F8 . 8) ; SORA SOMPENG DIGIT EIGHT
|
||||||
|
(#x110F9 . 9) ; SORA SOMPENG DIGIT NINE
|
||||||
|
(#x11136 . 0) ; CHAKMA DIGIT ZERO
|
||||||
|
(#x11137 . 1) ; CHAKMA DIGIT ONE
|
||||||
|
(#x11138 . 2) ; CHAKMA DIGIT TWO
|
||||||
|
(#x11139 . 3) ; CHAKMA DIGIT THREE
|
||||||
|
(#x1113A . 4) ; CHAKMA DIGIT FOUR
|
||||||
|
(#x1113B . 5) ; CHAKMA DIGIT FIVE
|
||||||
|
(#x1113C . 6) ; CHAKMA DIGIT SIX
|
||||||
|
(#x1113D . 7) ; CHAKMA DIGIT SEVEN
|
||||||
|
(#x1113E . 8) ; CHAKMA DIGIT EIGHT
|
||||||
|
(#x1113F . 9) ; CHAKMA DIGIT NINE
|
||||||
|
(#x111D0 . 0) ; SHARADA DIGIT ZERO
|
||||||
|
(#x111D1 . 1) ; SHARADA DIGIT ONE
|
||||||
|
(#x111D2 . 2) ; SHARADA DIGIT TWO
|
||||||
|
(#x111D3 . 3) ; SHARADA DIGIT THREE
|
||||||
|
(#x111D4 . 4) ; SHARADA DIGIT FOUR
|
||||||
|
(#x111D5 . 5) ; SHARADA DIGIT FIVE
|
||||||
|
(#x111D6 . 6) ; SHARADA DIGIT SIX
|
||||||
|
(#x111D7 . 7) ; SHARADA DIGIT SEVEN
|
||||||
|
(#x111D8 . 8) ; SHARADA DIGIT EIGHT
|
||||||
|
(#x111D9 . 9) ; SHARADA DIGIT NINE
|
||||||
|
(#x116C0 . 0) ; TAKRI DIGIT ZERO
|
||||||
|
(#x116C1 . 1) ; TAKRI DIGIT ONE
|
||||||
|
(#x116C2 . 2) ; TAKRI DIGIT TWO
|
||||||
|
(#x116C3 . 3) ; TAKRI DIGIT THREE
|
||||||
|
(#x116C4 . 4) ; TAKRI DIGIT FOUR
|
||||||
|
(#x116C5 . 5) ; TAKRI DIGIT FIVE
|
||||||
|
(#x116C6 . 6) ; TAKRI DIGIT SIX
|
||||||
|
(#x116C7 . 7) ; TAKRI DIGIT SEVEN
|
||||||
|
(#x116C8 . 8) ; TAKRI DIGIT EIGHT
|
||||||
|
(#x116C9 . 9) ; TAKRI DIGIT NINE
|
||||||
|
(#x1D7CE . 0) ; MATHEMATICAL BOLD DIGIT ZERO
|
||||||
|
(#x1D7CF . 1) ; MATHEMATICAL BOLD DIGIT ONE
|
||||||
|
(#x1D7D0 . 2) ; MATHEMATICAL BOLD DIGIT TWO
|
||||||
|
(#x1D7D1 . 3) ; MATHEMATICAL BOLD DIGIT THREE
|
||||||
|
(#x1D7D2 . 4) ; MATHEMATICAL BOLD DIGIT FOUR
|
||||||
|
(#x1D7D3 . 5) ; MATHEMATICAL BOLD DIGIT FIVE
|
||||||
|
(#x1D7D4 . 6) ; MATHEMATICAL BOLD DIGIT SIX
|
||||||
|
(#x1D7D5 . 7) ; MATHEMATICAL BOLD DIGIT SEVEN
|
||||||
|
(#x1D7D6 . 8) ; MATHEMATICAL BOLD DIGIT EIGHT
|
||||||
|
(#x1D7D7 . 9) ; MATHEMATICAL BOLD DIGIT NINE
|
||||||
|
(#x1D7D8 . 0) ; MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
|
||||||
|
(#x1D7D9 . 1) ; MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
|
||||||
|
(#x1D7DA . 2) ; MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
|
||||||
|
(#x1D7DB . 3) ; MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
|
||||||
|
(#x1D7DC . 4) ; MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
|
||||||
|
(#x1D7DD . 5) ; MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
|
||||||
|
(#x1D7DE . 6) ; MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
|
||||||
|
(#x1D7DF . 7) ; MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
|
||||||
|
(#x1D7E0 . 8) ; MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
|
||||||
|
(#x1D7E1 . 9) ; MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
|
||||||
|
(#x1D7E2 . 0) ; MATHEMATICAL SANS-SERIF DIGIT ZERO
|
||||||
|
(#x1D7E3 . 1) ; MATHEMATICAL SANS-SERIF DIGIT ONE
|
||||||
|
(#x1D7E4 . 2) ; MATHEMATICAL SANS-SERIF DIGIT TWO
|
||||||
|
(#x1D7E5 . 3) ; MATHEMATICAL SANS-SERIF DIGIT THREE
|
||||||
|
(#x1D7E6 . 4) ; MATHEMATICAL SANS-SERIF DIGIT FOUR
|
||||||
|
(#x1D7E7 . 5) ; MATHEMATICAL SANS-SERIF DIGIT FIVE
|
||||||
|
(#x1D7E8 . 6) ; MATHEMATICAL SANS-SERIF DIGIT SIX
|
||||||
|
(#x1D7E9 . 7) ; MATHEMATICAL SANS-SERIF DIGIT SEVEN
|
||||||
|
(#x1D7EA . 8) ; MATHEMATICAL SANS-SERIF DIGIT EIGHT
|
||||||
|
(#x1D7EB . 9) ; MATHEMATICAL SANS-SERIF DIGIT NINE
|
||||||
|
(#x1D7EC . 0) ; MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
|
||||||
|
(#x1D7ED . 1) ; MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
|
||||||
|
(#x1D7EE . 2) ; MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
|
||||||
|
(#x1D7EF . 3) ; MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
|
||||||
|
(#x1D7F0 . 4) ; MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
|
||||||
|
(#x1D7F1 . 5) ; MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
|
||||||
|
(#x1D7F2 . 6) ; MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
|
||||||
|
(#x1D7F3 . 7) ; MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
|
||||||
|
(#x1D7F4 . 8) ; MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
|
||||||
|
(#x1D7F5 . 9) ; MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
|
||||||
|
(#x1D7F6 . 0) ; MATHEMATICAL MONOSPACE DIGIT ZERO
|
||||||
|
(#x1D7F7 . 1) ; MATHEMATICAL MONOSPACE DIGIT ONE
|
||||||
|
(#x1D7F8 . 2) ; MATHEMATICAL MONOSPACE DIGIT TWO
|
||||||
|
(#x1D7F9 . 3) ; MATHEMATICAL MONOSPACE DIGIT THREE
|
||||||
|
(#x1D7FA . 4) ; MATHEMATICAL MONOSPACE DIGIT FOUR
|
||||||
|
(#x1D7FB . 5) ; MATHEMATICAL MONOSPACE DIGIT FIVE
|
||||||
|
(#x1D7FC . 6) ; MATHEMATICAL MONOSPACE DIGIT SIX
|
||||||
|
(#x1D7FD . 7) ; MATHEMATICAL MONOSPACE DIGIT SEVEN
|
||||||
|
(#x1D7FE . 8) ; MATHEMATICAL MONOSPACE DIGIT EIGHT
|
||||||
|
(#x1D7FF . 9))); MATHEMATICAL MONOSPACE DIGIT NINE
|
||||||
|
(num-digits (vector-length digit-table)))
|
||||||
|
(lambda (c)
|
||||||
|
(let ((ci (char->integer c)))
|
||||||
|
(let search ((lo 0) (hi num-digits))
|
||||||
|
(and (< lo hi)
|
||||||
|
(let* ((i (quotient (+ lo hi) 2))
|
||||||
|
(entry (vector-ref digit-table i))
|
||||||
|
(delta (- ci (car entry))))
|
||||||
|
(cond ((positive? delta)
|
||||||
|
(search (+ i 1) hi))
|
||||||
|
((negative? delta)
|
||||||
|
(search lo i))
|
||||||
|
(else (cdr entry))))))))))))
|
23
module/scheme/complex.scm
Normal file
23
module/scheme/complex.scm
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
;;; complex.scm --- The R7RS complex library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme complex)
|
||||||
|
(export make-rectangular make-polar
|
||||||
|
real-part imag-part angle magnitude)
|
||||||
|
(import (rnrs base)))
|
24
module/scheme/cxr.scm
Normal file
24
module/scheme/cxr.scm
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
;;; cxr.scm --- The R7RS cxr library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme cxr)
|
||||||
|
(export caaar caadr cadar caddr cdaar cdadr cddar cdddr
|
||||||
|
caaaar caaadr caadar caaddr cadaar cadadr caddar cadddr
|
||||||
|
cdaaar cdaadr cdadar cdaddr cddaar cddadr cdddar cddddr)
|
||||||
|
(import (rnrs base)))
|
32
module/scheme/eval.scm
Normal file
32
module/scheme/eval.scm
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
;;; eval.scm --- The R7RS eval library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme eval)
|
||||||
|
(export eval environment)
|
||||||
|
(import (scheme base)
|
||||||
|
(only (guile)
|
||||||
|
eval
|
||||||
|
make-module
|
||||||
|
resolve-r6rs-interface
|
||||||
|
module-use-interfaces!))
|
||||||
|
(begin
|
||||||
|
(define (environment . import-sets)
|
||||||
|
(let ((m (make-module)))
|
||||||
|
(module-use-interfaces! m (map resolve-r6rs-interface import-sets))
|
||||||
|
m))))
|
35
module/scheme/file.scm
Normal file
35
module/scheme/file.scm
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
;;; file.scm --- The R7RS file library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme file)
|
||||||
|
(export open-input-file open-output-file
|
||||||
|
open-binary-input-file open-binary-output-file
|
||||||
|
call-with-input-file call-with-output-file
|
||||||
|
with-input-from-file with-output-to-file
|
||||||
|
delete-file file-exists?)
|
||||||
|
(import (scheme base)
|
||||||
|
(rnrs io simple)
|
||||||
|
(rnrs files)
|
||||||
|
(rename (only (guile) open-file)
|
||||||
|
(open-file guile-open-file)))
|
||||||
|
(begin
|
||||||
|
(define (open-binary-input-file filename)
|
||||||
|
(guile-open-file filename "rb"))
|
||||||
|
(define (open-binary-output-file filename)
|
||||||
|
(guile-open-file filename "wb"))))
|
36
module/scheme/inexact.scm
Normal file
36
module/scheme/inexact.scm
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
;;; inexact.scm --- The R7RS inexact library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme inexact)
|
||||||
|
(export acos asin atan cos sin tan
|
||||||
|
log exp sqrt finite? infinite? nan?)
|
||||||
|
(import (rename (rnrs base)
|
||||||
|
(finite? r6rs-finite?)
|
||||||
|
(infinite? r6rs-infinite?)
|
||||||
|
(nan? r6rs-nan?)))
|
||||||
|
(begin
|
||||||
|
(define (finite? z)
|
||||||
|
(and (r6rs-finite? (real-part z))
|
||||||
|
(r6rs-finite? (imag-part z))))
|
||||||
|
(define (infinite? z)
|
||||||
|
(or (r6rs-infinite? (real-part z))
|
||||||
|
(r6rs-infinite? (imag-part z))))
|
||||||
|
(define (nan? z)
|
||||||
|
(or (r6rs-nan? (real-part z))
|
||||||
|
(r6rs-nan? (imag-part z))))))
|
24
module/scheme/lazy.scm
Normal file
24
module/scheme/lazy.scm
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
;;; lazy.scm --- The R7RS lazy library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme lazy)
|
||||||
|
(export promise? delay force make-promise delay-force)
|
||||||
|
(import (rename (srfi srfi-45)
|
||||||
|
(eager make-promise)
|
||||||
|
(lazy delay-force))))
|
36
module/scheme/load.scm
Normal file
36
module/scheme/load.scm
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
;;; load.scm --- The R7RS load library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme load)
|
||||||
|
(export load)
|
||||||
|
(import (scheme base)
|
||||||
|
(scheme eval)
|
||||||
|
(scheme repl)
|
||||||
|
(rename (only (guile)
|
||||||
|
define*
|
||||||
|
load
|
||||||
|
save-module-excursion
|
||||||
|
set-current-module)
|
||||||
|
(load guile-load)))
|
||||||
|
(begin
|
||||||
|
(define* (load filename #:optional (env (interaction-environment)))
|
||||||
|
(save-module-excursion
|
||||||
|
(lambda ()
|
||||||
|
(set-current-module env)
|
||||||
|
(guile-load filename))))))
|
42
module/scheme/process-context.scm
Normal file
42
module/scheme/process-context.scm
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
;;; process-context.scm --- The R7RS process-context library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme process-context)
|
||||||
|
(export command-line
|
||||||
|
exit
|
||||||
|
emergency-exit
|
||||||
|
get-environment-variable
|
||||||
|
get-environment-variables)
|
||||||
|
|
||||||
|
(import (scheme base)
|
||||||
|
(only (srfi srfi-13) string-index)
|
||||||
|
(rename (only (guile)
|
||||||
|
command-line
|
||||||
|
exit primitive-_exit
|
||||||
|
getenv environ)
|
||||||
|
(primitive-_exit emergency-exit)
|
||||||
|
(getenv get-environment-variable)))
|
||||||
|
|
||||||
|
(begin
|
||||||
|
(define (get-environment-variables)
|
||||||
|
(map (lambda (s)
|
||||||
|
(let ((i (string-index s #\=)))
|
||||||
|
(cons (substring s 0 i)
|
||||||
|
(substring s (+ i 1) (string-length s)))))
|
||||||
|
(environ)))))
|
72
module/scheme/r5rs.scm
Normal file
72
module/scheme/r5rs.scm
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
;;; r5rs.scm --- The R7RS r5rs library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme r5rs)
|
||||||
|
(export * + - / < <= = > >=
|
||||||
|
abs acos and angle append apply asin assoc assq assv atan begin
|
||||||
|
boolean? car cdr caar cadr cdar cddr
|
||||||
|
caaar caadr cadar caddr cdaar cdadr cddar cdddr
|
||||||
|
caaaar caaadr caadar caaddr cadaar cadadr caddar cadddr
|
||||||
|
cdaaar cdaadr cdadar cdaddr cddaar cddadr cdddar cddddr
|
||||||
|
call-with-current-continuation call-with-input-file
|
||||||
|
call-with-output-file call-with-values case ceiling char->integer
|
||||||
|
char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>?
|
||||||
|
char-downcase char-lower-case? char-numeric? char-ready? char-upcase
|
||||||
|
char-upper-case? char-whitespace? char<=? char<? char=? char>=?
|
||||||
|
char>? char? close-input-port close-output-port complex? cond cons
|
||||||
|
cos current-input-port current-output-port define define-syntax delay
|
||||||
|
denominator display do dynamic-wind eof-object? eq? equal? eqv?
|
||||||
|
eval even? exact? exact->inexact exp expt floor for-each force gcd
|
||||||
|
if imag-part inexact? inexact->exact input-port? integer->char
|
||||||
|
integer? interaction-environment lambda lcm length let let*
|
||||||
|
let-syntax letrec letrec-syntax list list->string list->vector
|
||||||
|
list-ref list-tail list? load log magnitude make-polar
|
||||||
|
make-rectangular make-string make-vector map max member memq memv
|
||||||
|
min modulo negative? newline not null-environment null?
|
||||||
|
number->string number? numerator odd? open-input-file
|
||||||
|
open-output-file or output-port? pair? peek-char positive? procedure?
|
||||||
|
quasiquote quote quotient rational? rationalize read read-char
|
||||||
|
real-part real? remainder reverse round scheme-report-environment
|
||||||
|
set! set-car! set-cdr! sin sqrt string string->list string->number
|
||||||
|
string->symbol string-append string-ci<=? string-ci<? string-ci=?
|
||||||
|
string-ci>=? string-ci>? string-copy string-fill! string-length
|
||||||
|
string-ref string-set! string<=? string<? string=? string>=?
|
||||||
|
string>? string? substring symbol->string symbol? tan truncate
|
||||||
|
values vector vector->list vector-fill! vector-length vector-ref
|
||||||
|
vector-set! vector? with-input-from-file with-output-to-file write
|
||||||
|
write-char zero?)
|
||||||
|
|
||||||
|
(import (rename (scheme base)
|
||||||
|
(exact inexact->exact)
|
||||||
|
(inexact exact->inexact))
|
||||||
|
(scheme read)
|
||||||
|
(scheme write)
|
||||||
|
(scheme file)
|
||||||
|
(scheme lazy)
|
||||||
|
(scheme inexact)
|
||||||
|
(scheme complex)
|
||||||
|
(scheme char)
|
||||||
|
(scheme cxr)
|
||||||
|
(scheme eval)
|
||||||
|
(scheme repl)
|
||||||
|
(scheme load)
|
||||||
|
(only (ice-9 r5rs)
|
||||||
|
scheme-report-environment)
|
||||||
|
(only (ice-9 safe-r5rs)
|
||||||
|
null-environment)))
|
22
module/scheme/read.scm
Normal file
22
module/scheme/read.scm
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
;;; read.scm --- The R7RS read library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme read)
|
||||||
|
(export read)
|
||||||
|
(import (only (guile) read)))
|
22
module/scheme/repl.scm
Normal file
22
module/scheme/repl.scm
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
;;; repl.scm --- The R7RS repl library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme repl)
|
||||||
|
(export interaction-environment)
|
||||||
|
(import (only (guile) interaction-environment)))
|
34
module/scheme/time.scm
Normal file
34
module/scheme/time.scm
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
;;; time.scm --- The R7RS time library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme time)
|
||||||
|
(export current-second current-jiffy jiffies-per-second)
|
||||||
|
(import (scheme base)
|
||||||
|
(srfi srfi-19)
|
||||||
|
(rename (only (guile)
|
||||||
|
internal-time-units-per-second
|
||||||
|
get-internal-real-time)
|
||||||
|
(get-internal-real-time current-jiffy)))
|
||||||
|
(begin
|
||||||
|
(define (current-second)
|
||||||
|
(let ((time (current-time time-tai)))
|
||||||
|
(+ (time-second time)
|
||||||
|
(* 1e-9 (time-nanosecond time)))))
|
||||||
|
(define (jiffies-per-second)
|
||||||
|
internal-time-units-per-second)))
|
38
module/scheme/write.scm
Normal file
38
module/scheme/write.scm
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
;;; write.scm --- The R7RS write library
|
||||||
|
|
||||||
|
;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
|
||||||
|
;;
|
||||||
|
;; This library is free software; you can redistribute it and/or
|
||||||
|
;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;; License as published by the Free Software Foundation; either
|
||||||
|
;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; This library is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;; Lesser General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;; License along with this library; if not, write to the Free Software
|
||||||
|
;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
(define-library (scheme write)
|
||||||
|
(export display
|
||||||
|
write
|
||||||
|
write-shared
|
||||||
|
write-simple)
|
||||||
|
(import (scheme base)
|
||||||
|
(rename (only (guile)
|
||||||
|
display
|
||||||
|
write)
|
||||||
|
(write guile-write)))
|
||||||
|
(begin
|
||||||
|
(define write-simple guile-write)
|
||||||
|
|
||||||
|
;; XXX FIXME outputs cyclic data in non-standard format.
|
||||||
|
(define write guile-write)
|
||||||
|
|
||||||
|
;; XXX FIXME doesn't show non-cyclic sharing, and outputs cyclic
|
||||||
|
;; data in non-standard format.
|
||||||
|
(define write-shared guile-write)))
|
Loading…
Add table
Add a link
Reference in a new issue