@Devon - yours is a solution that's growing on me. Omitting the word "programmatically". As a developer I rely so much on symbolic folder names that I'm flying by instruments most of the time, and I don't like it. Sure it works 99.9% of the time, but that remaining one-in-a-thousand wastes me hours, typically when I've got a deadline to meet. Or else it chagrins users.
So I want something that works 100%, if it works at all. Here's something so simple-stupid it has the ring of dependability about it: Suppose I insert at the head of each script that needs it: CREATORSCRIPT=: 'UNSET' then have a simple daemon that periodically scans my entire user folder looking for scripts containing that word, and replacing it with the full pathname of the said script, if that's not the case already. No "jpath". Plus it will report infringements, which will make interesting reading. @Don - yes, that's neater than my (former) solution (below). Which I didn't code tightly because I was correctly anticipating debugging it a year or two hence… whereami=: 3 : 0 '' NB. returns directory containing this script NB. also assigns global: WHEREAMI -the folder in question NB. plus SEP -the platform-dependent path-separator. ws=. [: 'Not from script'"_`({ 4!:3@(0&$))@.(0&<:) [: 4!:4 [: < > WHEREAMI=: '<UNSET>' NB. needed for ws to work with z=. >ws 'WHEREAMI' SEP=: '/\' {~ '\' e. z WHEREAMI=: (>: z i: SEP) {.z ) This problem is like The Alien… it keeps mutating and coming back to bite you. On Wed, 10 Apr 2019 at 02:50, Don Guinn <dongu...@gmail.com> wrote: > I put this in the starts of my scripts where I need to load other scripts > from the same directory. Easily modified to keep the full file name. > > NB. Find directory for this app. > > maindir=:'' > > maindir=:z{.~>:1 i:~'/\' e.~z=.;(4!:4 <'maindir'){4!:3 '' > > On Tue, Apr 9, 2019 at 7:39 PM Devon McCormick <devon...@gmail.com> wrote: > > > Could you programmatically insert a line into the start of each script so > > it would tell you who it is? > > > > On Tue, Apr 9, 2019 at 9:07 PM Ian Clark <earthspo...@gmail.com> wrote: > > > > > Bill wrote > > > > J interpreter only knows the last script that it started to load. > > > > > > That's the key to the whole thing. > > > > > > I'm convinced nothing can go wrong (with 4!:3/4!:4) when there are no > > > scripts involved which load other scripts. But they do. All too often. > > > > > > On top of that, if you use the scheme a lot, as I did, then another > > script > > > can be loaded later and overwrite the pronoun: MYSCRIPT. Maybe I need > to > > be > > > more paranoid and not go using the name 'MYSCRIPT' for every script > that > > > wants to badge the locale it creates, but instead… > > > > > > ++ randomise the name - and be able to recognise the one you want when > > > there's more than one (which in itself would be highly diagnostic), > > > ++ create the global if absent, and subsequently catenate entries to > it, > > > ++ look at the 4!:4 of every name in 4!:1[0 and take a majority vote > > (…but > > > that's no good for a stock phrase to be executed at load-time at the > top > > of > > > the script.) > > > > > > On Wed, 10 Apr 2019 at 01:42, bill lam <bbill....@gmail.com> wrote: > > > > > > > I think J interpreter only knows the last script that it started to > > load. > > > > It doesn't know from which scripts that the current sentence being > > > executed > > > > came because all are inside RAM. The identity of script file name are > > > lost. > > > > > > > > On Wed, Apr 10, 2019, 8:27 AM Ian Clark <earthspo...@gmail.com> > wrote: > > > > > > > > > @Don - that's the scheme I've been using. Basically: create a > global > > > noun > > > > > and look at its 4!:4. For a couple of years I used it in all the > code > > > > that > > > > > needed it. Then it let me down a year ago, and unfortunately I > never > > > > > tracked down why. But the upshot was so grave that I tore the > > facility > > > > out > > > > > of all my code and looked for alternative ways of registering the > > path > > > > > about to be loaded, where this was under my control. > > > > > > > > > > It all became very hit-and-miss, and recently I've come to the > > > conclusion > > > > > that if anyone reading this list had a tested and guaranteed > solution > > > to > > > > > this problem, or there was a magic Foreign I didn't know about, I > > > needed > > > > to > > > > > know it. > > > > > > > > > > People like me who use whichscript a lot (it uses 4!:4 and resides > in > > > > > ~addons/misc/miscutils/utils.ijs) know that all too often it can > > return > > > > > 'Not from script'. Generally when you really want to know: where > did > > > > *that* > > > > > blessed (noun/verb) come from??! Well, the question I want to > answer > > in > > > > > this thread is: what script does such-and-such a locale imagine has > > > > created > > > > > it? (Or last pooped-on it.) > > > > > > > > > > Why do I want to know? > > > > > (1) for forensic reasons (i.e. bug-hunting in conditions of > > > > > code-regression). I keep a lot of versions of suites of scripts I'm > > > > > developing, and I can't be sure I've always purged *all* the old > > > > versions. > > > > > Particularly from unfinished jobs gathering dust. > > > > > (2) to enable a script to execute: "load the version of script XYZ > > > which > > > > is > > > > > meant to reside in the folder I find myself in". (Surely > > addon-writers > > > > and > > > > > heavy GutHub cloners have this requirement? > > > > > > > > > > I shall carry on looking for more and more reliable techniques… but > > > > surely > > > > > the J interpreter, in its heart-of-hearts, knows the path to the > file > > > it > > > > is > > > > > currently loading, so why is this such a big deal? > > > > > > > > > > Ian > > > > > > > > > > On Wed, 10 Apr 2019 at 00:38, Ian Clark <earthspo...@gmail.com> > > wrote: > > > > > > > > > > > @Eric - tried that too. > > > > > > > > > > > > The "load" verb contains the line: Loaded_j_=: ~. Loaded_j_,fl > > > > > > > > > > > > so although I know the path I need is in Loaded_j_ somewhere, I > > can't > > > > > tell > > > > > > which one it is. > > > > > > > > > > > > I've also tried modifying load, assigning the local: (fl) to a > > > > > > guaranteed-unique _z_ or _j_ pronoun before it gets lost. That > > > doesn't > > > > > > always work either, except with non-nested loads. I admit I don't > > > know > > > > > why > > > > > > (it looks as if it can't fail!) and I've been too busy to go > > looking. > > > > > > > > > > > > Unless someone knows a *guaranteed* way, I'm going to book it at > > > > > > https://code.jsoftware.com/wiki/System/Interpreter/Requests > > > > > > > > > > > > > > > > > > On Tue, 9 Apr 2019 at 14:22, Eric Iverson < > > eric.b.iver...@gmail.com> > > > > > > wrote: > > > > > > > > > > > >> Ian, > > > > > >> I don't think 4!:3 meets your needs (duplicates). The load verb > > > > > maintains > > > > > >> Loaded_j_ and this might meet your needs. > > > > > >> > > > > > >> On Tue, Apr 9, 2019 at 8:49 AM bill lam <bbill....@gmail.com> > > > wrote: > > > > > >> > > > > > >> > Does this work? > > > > > >> > > > > > > >> > MYSCRIPT=: >{:4!:3'' > > > > > >> > > > > > > >> > On Tue, Apr 9, 2019, 8:29 PM Ian Clark <earthspo...@gmail.com > > > > > > wrote: > > > > > >> > > > > > > >> > > How can I *reliably* fetch the path of the script being > > loaded, > > > > > >> whilst it > > > > > >> > > is being loaded? > > > > > >> > > > > > > > >> > > Everything I've tried either fails or fingers the wrong > script > > > on > > > > > >> > > occasions. Especially if my script is the subject of "load" > or > > > > > >> "require" > > > > > >> > by > > > > > >> > > another script. > > > > > >> > > > > > > > >> > > I want to be able to write at the top of my script, say > > > > > >> > > > > > > > >> > > cocurrent 'myloc' > > > > > >> > > MYSCRIPT=: theScriptCurrentlyBeingLoaded'' > > > > > >> > > > > > > > > > ---------------------------------------------------------------------- > > > > > >> > > For information about J forums see > > > > > >> http://www.jsoftware.com/forums.htm > > > > > >> > > > > > > ---------------------------------------------------------------------- > > > > > >> > For information about J forums see > > > > > http://www.jsoftware.com/forums.htm > > > > > >> > > > ---------------------------------------------------------------------- > > > > > >> For information about J forums see > > > > http://www.jsoftware.com/forums.htm > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------- > > > > > For information about J forums see > > http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > > -- > > > > Devon McCormick, CFA > > > > Quantitative Consultant > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm