1

バージョン出力は次のとおりです。

GNU CLISP 2.33 (2004-03-17) (built 2004-05-24 16:21:45)
Software: GNU C 3.3.1 (cygming special) ANSI C program
Features: (CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS
LOGICAL-PATHNAMES SCREEN FFI UNICODE BASE-CHAR=CHARACTER PC386 WIN32)

検索すると EXT:MAKE-DIRECTORY が表示されますが、このバージョンでは機能しません。

かなり古いバージョンであることはわかっていますが、現在持っているものであり、最新バージョンを使用しようとすると別の問題が発生します。

フルパスのすべてのディレクトリを作成するものが欲しいのですが、単一のディレクトリを作成できるだけでも便利です。

4

3 に答える 3

3

foo現在の作業ディレクトリにディレクトリを作成するには:

(ensure-directories-exist "foo/")

また、ディレクトリ構造全体を作成することもできます。

(ensure-directories-exist "/tmp/lisp/rulez/")

最後のスラッシュは重要です。スラッシュがないと機能しません。

EXT:MAKE_DIRECTORYもう一つは、正しく使用していない可能性があるということです。ディレクトリ名の文字列を渡すだけでは機能しません。次のように使用する必要があります。

 (ext:make-directory (make-pathname :directory '(:relative "foobar")))
于 2012-11-26T17:42:09.420 に答える
1

CLISP 2.44 (2008-02-02)に名前が変更さEXT:MAKE-DIRれましたEXT:MAKE-DIRECTORY

またはのいずれENSURE-DIRECTORIES-EXISTかを使用しますEXT:MAKE-DIR

于 2012-11-26T20:38:19.690 に答える
0

EXT:MAKE-DIRETORYがないのは不思議です。2004年は「古い」ですが、CLISPに関してはそれほど古いものではなく、EXT:MAKE-DIRECTORYはかなり基本的な機能です。おそらく、このCLISPは、なんらかの奇妙な理由で、それなしで特別に構築されたのでしょう。

もう1つの解決策は、コマンドライン(EXT:SHELLとその仲間)を呼び出すことですが、EXT:MAKE-DIRECTORYがない場合は、おそらくそれらもありません。さらに、これはプラットフォームに依存し(コマンドがプラットフォームに依存するように)、統合も不十分です。しかし、それは可能です(それらも存在すると仮定して)。

CLISPをアップグレードする可能性はありますか?

于 2012-11-26T17:42:23.837 に答える