実行中のスクリプトのパス (ソース ファイルを含むディレクトリ) を取得する方法が必要ですが、
(current-directory)
そこ (この場合は外付けドライブ) ではなく、あらかじめ定義された場所を指します。
すべての「find-system-path」を試すためにファイルを作成しましたが、どれも実行中のファイルではありません! ラケットのドキュメントは役に立ちません。
#lang web-server/insta
(define (start request)
(local [{define (build-ul items)
`(ul ,@(map itemize items))}
{define (itemize item)
`(li ,(some-system-path->string (find-system-path item)))}]
(response/xexpr
`(html
(head (title "Directories"))
(body (h1 ,"Some Paths")
(p ,(build-ul special-paths)))))))
(define special-paths (list 'home-dir
'pref-dir
'pref-file
'temp-dir
'init-dir
'init-file
;'links-file ; not available for Linux
'addon-dir
'doc-dir
'desk-dir
'sys-dir
'exec-file
'run-file
'collects-dir
'orig-dir))
目的は、ソース ファイルを含むディレクトリの下のサブディレクトリを変更するローカル Web サーバー アプリケーション (音楽サーバー) です。アプリを USB スティックで運ぶので、Racket がインストールされたマシンとオペレーティング システムの間でアプリを運ぶときに、独自のディレクトリを見つけることができる必要があります。