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))
|