[Gauche-devel-jp] Re: lib/slib.scmの(home-vicinity)

Zurück zum Archiv-Index

Shiro Kawai shiro****@lava*****
2003年 12月 12日 (金) 11:07:52 JST


From: Shoji Kuzukami <kuzuk****@manba*****>
Subject: [Gauche-devel-jp] lib/slib.scmの(home-vicinity)
Date: Fri, 12 Dec 2003 10:57:22 +0900

> 標準のslibでは,*-vicinityの返す値は,
> おしりに"/"つまり,*dir-sep*が追加されているようです.
> 
> もしよければ,
> 
> lib/slibに
> (define *dir-sep* "/")
> (define (sane-vicinity f)
> 	(define sl (string-length f))
> 	(define dsl (string-length *dir-sep*))
> 	(if (equal? (substring f (- sl dsl) sl) dsl)
> 		f
> 		(string-append f *dir-sep*)))
> (define (home-vicinity) (sane-vicinity (getenv "HOME")))
> のような修正を行なってくれませんか?

了解です。srfi-13のstring-suffix? を使えば

(define (sane-vicinity f)
  (if (string-suffix? *dir-sep* f)
    f
    (string-append f *dir-sep*)))

かな。

(getenv "HOME") は以前HOMEが定義されない環境で問題が出たことがあるので、

(or (home-directory) (sys-getenv "HOME")) 

がいいかもしれません。


> あと
> (define slib:load slib:load-source) よりか
> (define (slib:load f)
> 	(if (file-exists? f)
> 		(%load f);でしたっけ?
> 		(slib:load-source f)))
> のほうが,SCMの動作に近いような気がします.

あ、なるほど。slib:loadはサフィックスがついててもいいのですね。
それなら

 (define slib:load load)

でいけるかな。Gaucheのloadは最初に名前のままのファイルを見て、
無ければ ".scm" をつけたものを調べます。

--shiro





Gauche-devel-jp メーリングリストの案内
Zurück zum Archiv-Index