Как мне получить имя программы в Racket?

Я хотел бы программно определить имя программы в коде Racket. Это можно сделать в Chicken Scheme с помощью:

#!/bin/sh
#|
exec csi -ss $0 ${1+"$@"}
exit
|#

(define (main)
    (display (format "Program: ~a\n" (program-name)))
    (exit))

(if (not (equal? (program-name) "csi"))
    (main))

Как я мог подражать этому в Racket?


person mcandre    schedule 15.10.2012    source источник


Ответы (2)


Это то, что вы хотите?

(find-system-path 'run-file)

См. также racket/cmdline, как анализировать командную строку.

http://docs.racket-lang.org/reference/Command-Line_Parsing.html

person soegaard    schedule 15.10.2012

Примечание: для этого конкретного шаблона выполнения, чтобы иметь библиотечный модуль, который также можно запускать как основной, используйте подмодуль с именем main. См. основные и тестовые подмодули, который показывает, как это сделать.

person dyoo    schedule 15.10.2012