scsh-users
[Top] [All Lists]

Re: slib

To: scsh-news@zurich.ai.mit.edu
Subject: Re: slib
From: Rolf-Thomas Happe <rthappe@mathematik.uni-freiburg.de>
Date: 02 Feb 2002 22:24:54 +0100
Organization: IAM * ALU Frg * Germ
Ed Kademan writes:
> Does anyone have an example of how to use slib from scsh?  I took the
> scsh.init file that came with slib, modified it for my site, and now
> can actually invoke the format procedure---my immediate reason for
> trying slib---but I am not doing things in what I believe is the
> accepted way.  I can't seem to get "require" to work for example and
> am getting annoying warning messages.  Here is what I have to do

I'd prefer to get rid of slib's PROVIDE and REQUIRE machinery
and embrace s48's module system.  (The dark ages have to end some
day.)  The PS below contains the --improvised-- module definitions 
for that part of slib needed to FORMAT, like so:

Welcome to scsh 0.6.0 (Chinese Democracy)
Type ,? for help.
> ,config ,load slib/packages.scm
slib/packages.scm
> ,open slib-format                   ; alternatively ,open slib
Load structure slib-format (y/n)? y
[nary-mindiv]
[slib-cruft]
[slib-genewrite slib/genwrite.scm]
[slib-pp slib/pp.scm]
[slib-strcase slib/strcase.scm]
[slib-strport slib/strport.scm]
[slib-format slib/format.scm
Warning: invalid arguments
         (- left-zeros format:fn-dot -1)
         (procedure wants: (:number &opt :number))
         (arguments are: (:value :value :exact-integer))
]
> (format #f "~20d" 234)
"                 234"
> 

rthappe

PS:
;;; Dump slib's dependency mechanism in favour of s48's module system. 
;;; assuming this file resides in the slib source dir

;; interfaces

(define-interface slib-genewrite-iface
  (export generic-write
          reverse-string-append))
          
(define-interface slib-strcase-iface
  (export string-upcase string-downcase string-capitalize
          string-upcase! string-downcase! string-capitalize!
          string-ci->symbol symbol-append))

(define-interface slib-strport-iface
  (export call-with-output-string call-with-input-string))

(define-interface slib-iface            ; well ...
  (compound-interface (export format
                              pretty-print)
                      slib-genewrite-iface
                      slib-strcase-iface
                      slib-strport-iface))

;; structures

(define-structure nary-mindiv (export / -)
  (open scheme)
  ;; or maybe you prefer slib's mularg.scm?
  (begin
    (define minus -)
    (define div /)
    (define (- x . xs)
      (minus x (apply + xs)))
    (define (/ x . xs)
      (div x (apply * xs)))))

(define-structure slib-cruft
  (export require provide provided?
          slib:tab slib:form-feed
          slib:error
          current-error-port force-output output-port-width
          tmpnam delete-file)
  (open scheme
        scsh-level-0
        )
  (begin
    (define (provide x) #f)
    (define (require x) #f)
    (define (provided? key)
      (case key
        ((inexact complex) #t)
        (else #f)))
    ;; taken from scsh.init (and modified)
    (define (output-port-width . arg) 79)
    (define (tmpnam)
      (create-temp-file "slib_"))
    (define slib:tab (ascii->char 9))
    (define slib:form-feed (ascii->char 12))
    (define slib:error error)
    ))

(define-structure slib-genewrite slib-genewrite-iface
  (open scheme slib-cruft)
  (files genwrite))

(define-structure slib-strcase slib-strcase-iface
  (open scheme slib-cruft)
  (files strcase))

(define-structure slib-strport slib-strport-iface
  (open scheme slib-cruft)
  (files strport))

(define-structure slib-pp (export pretty-print)
  (open scheme
        slib-cruft
        slib-genewrite)
  (files pp))

(define-structure slib-format (export format)
  (open scheme 
        nary-mindiv
        slib-cruft
        slib-pp
        slib-strcase slib-strport
        )
  (files format))

(define-structure slib slib-iface
  (open nary-mindiv
        slib-cruft
        slib-genewrite
        slib-strcase slib-strport
        slib-format slib-pp))

<Prev in Thread] Current Thread [Next in Thread>
  • slib, Ed Kademan
    • Re: slib, Rolf-Thomas Happe <=