Jestem nowy w Racket (i ogólnie w Lisp) i zastanawiam się, czy istnieje kanoniczny sposób na wykrycie, czy skrypt został uruchomiony z wiersza poleceń?Wykrywanie, czy skrypt został wykonany z wiersza poleceń w Racket?
Na przykład w Pythonie standardowy sposób, aby zrobić to byłoby tak jak z if __name__ == __main__:
:
def foo():
"foo!"
if __name__ == "__main__":
foo()
Teraz załóżmy, że ma następujący kod rakieta, i chciałbym respond
powoływać się tylko wtedy, gdy jest uruchamiany jako skrypt.
#lang racket
(require racket/cmdline)
(define hello? (make-parameter #f))
(define goodbye? (make-parameter #f))
(command-line #:program "cmdtest"
#:once-each
[("-H" "--hello") "Add Hello Message" (hello? #t)]
[("-G" "--goodbye") "Add goodbye Message" (goodbye? #t)])
(define (respond)
(printf "~a\n"
(apply string-append
(cond
[(and (hello?) (goodbye?)) '("Hello" " and goodbye.")]
[(and (hello?) (not (goodbye?))) '("Hello." "")]
[(and (not (hello?)) (goodbye?)) '("" "Goodbye.")]
[else '("" "")]))))
Czy istnieje łatwy/standardowy sposób osiągnięcia tego, czego chcę?