On 8/26/21 8:14 AM, Matthew Flatt wrote:
The analog to the first argument to main in C is

   (find-system-path 'run-file)

I think that's probably what you want.
Yes, this has the behavior I want.  Thank you.

Procedure find-system-path seems well documented once one finds its section.  But not knowing what to search for, I found it hard to find in the documentation.  It seems like one easy concrete discoverability improvement would be to mention (find-system-path 'run-file) in the docs for current-command-line-arguments, command-line, or both.  I was sure to look carefully in those places.

Regards,


Jeff Henrikson


On 8/26/21 8:14 AM, Matthew Flatt wrote:
The analog to the first argument to main in C is

   (find-system-path 'run-file)

I think that's probably what you want.


Something closer to `get-current-source` but adapting to a run-time
file is

  (variable-reference->module-source
   (#%variable-reference))

Here, `(#%variable-reference)` is the primitive form that obtains a
connection to the enclosing module at run time. If you create an
executable with `raco exe`, though, the "source" of the module will be
a symbolic name instead of a path, because a module that's embedded in
an executable doesn't have a file identity anymore.

At Thu, 26 Aug 2021 07:51:35 -0700, Jeff Henrikson wrote:
Racket users,

Many software applications use their location in the filesystem to
establish filesystem relationships between their executable file, their
configuration and their data.  For this purpose, C provides the first
element of the string array provided to main, python provides __file__,
bash provides ${BASH_SOURCE[0]}, etc.

Racket strips said value before current-command-line-arguments receives
the subsequent command-line arguments from the operating system.

A related value can be pulled from syntax-source as follows:

     (define-syntax (get-current-source stx)
        (datum->syntax
         (quote-syntax here)
         (syntax-source stx)
         stx))

Macro get-current-source works as intended if called at program startup
and the program is compiled on the fly with:

     racket program.rkt

However get-current-source has the unintended property of memorizing the
original source location if the program is compiled with raco exe (and
then moved).

Is there a way in racket to obtain the path of the application program?


Jeff Henrikson


--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/racket-users/a076dfa2-d1a5-3cda-72ae-a30cdb91d
c31%40gmail.com.

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/f1133af2-a244-be6b-f9ff-c021f5b88366%40gmail.com.

Reply via email to