Sono nuovo di Racket (e di Lisp in generale) e mi chiedo se c'è un modo canonico per rilevare se uno script è stato eseguito dalla riga di comando?Rilevare se lo script viene eseguito dalla riga di comando in Racket?
Per esempio, in Python il modo standard per fare questo sarebbe stato con if __name__ == __main__:
come così:
def foo():
"foo!"
if __name__ == "__main__":
foo()
Ora, supponiamo che io avere il seguente codice Racket, e mi piacerebbe respond
ad essere invocate solo quando questo è eseguito come una sceneggiatura.
#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 '("" "")]))))
C'è un modo semplice/standard per ottenere ciò che voglio?