Hi!

Here are a few patches regarding R6RS-compatible SRFIs:

- SRFI 6: Operate on R6RS ports
- SRFI 13: Fix `string-tokenize' return value
- SRFI 67: Use R6RS language (and hence mutable pairs)
- SRFI 98: Provide named alias library (srfi :98 os-environment-variables)

From: Andreas Rottmann <[email protected]>
Subject: Pull in the SRFI-6 implementation from Derick's collection

(srfi :6 basic-string-ports) needs to operate with R6RS ports, not
mzscheme ones.

---
 collects/srfi/%3a6.ss |   62 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/collects/srfi/%3a6.ss b/collects/srfi/%3a6.ss
index 55669f5..a76fffa 100644
--- a/collects/srfi/%3a6.ss
+++ b/collects/srfi/%3a6.ss
@@ -1 +1,61 @@
-#lang s-exp srfi/provider srfi/6
+;; Copyright (c) 2009 Derick Eddington.
+;;
+;; Permission is hereby granted, free of charge, to any person obtaining a
+;; copy of this software and associated documentation files (the "Software"),
+;; to deal in the Software without restriction, including without limitation
+;; the rights to use, copy, modify, merge, publish, distribute, sublicense,
+;; and/or sell copies of the Software, and to permit persons to whom the
+;; Software is furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be included in
+;; all copies or substantial portions of the Software.
+
+;; Except as contained in this notice, the name(s) of the above copyright
+;; holders shall not be used in advertising or otherwise to promote the sale,
+;; use or other dealings in this Software without prior written authorization.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+;; THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+;; DEALINGS IN THE SOFTWARE.
+
+#!r6rs
+(library (srfi :6)
+  (export
+    (rename (open-string-input-port open-input-string))
+    open-output-string
+    get-output-string)
+  (import
+    (rnrs)
+    (only (scheme base) make-weak-hasheq hash-ref hash-set!))
+  
+  (define accumed-ht (make-weak-hasheq))
+  
+  (define (open-output-string)
+    (letrec ([sop
+              (make-custom-textual-output-port
+               "string-output-port"
+               (lambda (string start count)  ; write!
+                 (when (positive? count)
+                   (let ([al (hash-ref accumed-ht sop)])
+                     (hash-set! accumed-ht sop 
+                       (cons (substring string start (+ start count)) al))))
+                 count)
+               #f  ; get-position  TODO?
+               #f  ; set-position!  TODO?
+               #f  #| closed  TODO? |# )])
+      (hash-set! accumed-ht sop '())
+      sop))
+  
+  (define (get-output-string sop)
+    (if (output-port? sop)
+      (cond [(hash-ref accumed-ht sop #f)
+             => (lambda (al) (apply string-append (reverse al)))]
+            [else
+             (assertion-violation 'get-output-string "not a string-output-port" sop)])
+      (assertion-violation 'get-output-string "not an output-port" sop)))
+
+)
-- 
tg: (f350424..) t/srfi-6 (depends on: master)
From: Andreas Rottmann <[email protected]>
Subject: Fix `string-tokenize' return value


---
 collects/srfi/%3a13.ss |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/collects/srfi/%3a13.ss b/collects/srfi/%3a13.ss
index 5b603c9..222e5af 100644
--- a/collects/srfi/%3a13.ss
+++ b/collects/srfi/%3a13.ss
@@ -95,10 +95,10 @@
 (define string-tokenize
   (case-lambda
     ((s token-set start end)
-     (srfi13:string-tokenize s token-set start end))
+     (list->mlist (srfi13:string-tokenize s token-set start end)))
     ((s token-set start)
-     (srfi13:string-tokenize s token-set start))
+     (list->mlist (srfi13:string-tokenize s token-set start)))
     ((s token-set)
-     (srfi13:string-tokenize s token-set))
+     (list->mlist (srfi13:string-tokenize s token-set)))
     ((s)
-     (srfi13:string-tokenize s))))
+     (list->mlist (srfi13:string-tokenize s)))))
-- 
tg: (f350424..) t/srfi-13 (depends on: master)
From: Andreas Rottmann <[email protected]>
Subject: Make `(srfi :67 compare-procedure)' handle mutable pairs


---
 collects/srfi/%3a67.ss |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/collects/srfi/%3a67.ss b/collects/srfi/%3a67.ss
index 422aa0e..d9a4c52 100644
--- a/collects/srfi/%3a67.ss
+++ b/collects/srfi/%3a67.ss
@@ -1 +1,26 @@
-#lang s-exp srfi/provider srfi/67
+#!r6rs
+
+(library (srfi :67)
+  (export  </<=? </<? <=/<=? <=/<? <=? <? =?
+           >/>=? >/>? >=/>=? >=/>? >=? >?
+           boolean-compare chain<=? chain<? chain=? chain>=? chain>?
+           char-compare char-compare-ci
+           compare-by< compare-by<= compare-by=/< compare-by=/> compare-by> 
+           compare-by>= complex-compare cond-compare
+           debug-compare default-compare
+           if-not=? if3 if<=? if<? if=? if>=? if>? integer-compare
+           kth-largest list-compare list-compare-as-vector
+           max-compare min-compare not=? number-compare
+           pair-compare pair-compare-car pair-compare-cdr
+           pairwise-not=? rational-compare real-compare
+           refine-compare select-compare string-compare string-compare-ci 
+           symbol-compare vector-compare vector-compare-as-list)
+  
+  (import (except (rnrs) error)
+          (rnrs r5rs)    ; for modulo
+          (srfi :27 random-bits)  ; for random-integer
+          (srfi :23 error)
+          (scheme include)
+          (only (scheme base) lib))
+
+(include (lib "srfi/67/compare-reference.scm")))
-- 
tg: (f350424..) t/srfi-67 (depends on: master)
From: Andreas Rottmann <[email protected]>
Subject: Add implementation of SRFI-98 (os-environment-variables)

The implementation of `get-environment-variables' was taken from
Derick Eddington's R6RS SRFI collection.

---
 collects/srfi/%3a98/os-environment-variables.ss |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/collects/srfi/%3a98/os-environment-variables.ss b/collects/srfi/%3a98/os-environment-variables.ss
new file mode 100644
index 0000000..7b142a9
--- /dev/null
+++ b/collects/srfi/%3a98/os-environment-variables.ss
@@ -0,0 +1 @@
+#lang s-exp srfi/provider srfi/%3a98
-- 
tg: (f350424..) t/srfi-98 (depends on: master)
Regards, Rotty
-- 
Andreas Rottmann -- <http://rotty.yi.org/>
_________________________________________________
  For list-related administrative tasks:
  http://list.cs.brown.edu/mailman/listinfo/plt-dev

Reply via email to