Seems it's some config problem or what, i'm not sure. But here's how i made it at least work.
To load SLIB, use something like, (use-modules (ice-9 slib)) (require 'printf) But don't load this directly: ;; (load-from-path "/usr/share/slib/init/guile.init") Instead, when it says something not found, like `user-vicinity', simply cut them from guile.init and paste it to ice-9/slib.scm. Total changes i've made are: williamxu:~/share/guile/1.9/ice-9$ diff -u slib.scm.orig slib.scm --- slib.scm.orig 2006-02-24 22:53:59.936000000 +0800 +++ slib.scm 2006-02-24 22:55:07.760000000 +0800 @@ -6,12 +6,12 @@ ;;;; modify it under the terms of the GNU Lesser General Public ;;;; License as published by the Free Software Foundation; either ;;;; version 2.1 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 @@ -233,6 +233,60 @@ (define slib:load-source slib:load) (define defmacro:load slib:load) +;; by xwl(cut from slib/guile.init) +(define (user-vicinity) + (case (software-type) + ((vms) "[.]") + (else ""))) + +(define with-load-pathname + (let ((exchange + (lambda (new) + (let ((old program-vicinity)) + (set! program-vicinity new) + old)))) + (lambda (path thunk) + (define old #f) + (define vic (pathname->vicinity path)) + (dynamic-wind + (lambda () (set! old (exchange (lambda () vic)))) + thunk + (lambda () (exchange old)))))) + +(define (pathname->vicinity pathname) + (let loop ((i (- (string-length pathname) 1))) + (cond ((negative? i) "") + ((vicinity:suffix? (string-ref pathname i)) + (substring pathname 0 (+ i 1))) + (else (loop (- i 1)))))) + +(define (program-vicinity) + (define clp (current-load-port)) + (if clp + (pathname->vicinity (port-filename clp)) + (slib:error 'program-vicinity " called; use slib:load to load"))) + +;;; (software-type) should be set to the generic operating system type. +;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported. +(define software-type + (if (string<? (version) "1.6") + (lambda () 'UNIX) + (lambda () 'unix))) + +(define vicinity:suffix? + (let ((suffi + (case (software-type) + ((amiga) '(#\: #\/)) + ((macos thinkc) '(#\:)) + ((ms-dos windows atarist os/2) '(#\\ #\/)) + ((nosve) '(#\: #\.)) + ((unix coherent plan9) '(#\/)) + ((vms) '(#\: #\])) + (else + (warn "require.scm" 'unknown 'software-type (software-type)) + "/")))) + (lambda (chr) (and (memv chr suffi) #t)))) + (define slib-parent-dir (let* ((path (%search-load-path "slib/require.scm"))) (if path -- William _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user