Oh dear.

Can I request its promotion to a feature?

On Fri, Sep 7, 2012 at 3:41 AM, bill lam <[email protected]> wrote:
> As I understand it, the short hand load'foo/bar' is intended to load
> an addon package, and a package is fixed at the 2nd level of the
> folder tree under ~addons.  If it can work with other variations
> under ~addons, it might be a bug.
>
> Птн, 07 Сен 2012, Ian Clark писал(а):
>> @Raul  @Devon
>>
>> Yes, thank you both, your thoughts have helped me a lot.
>>
>> Though I guess I knew most of that already. But what was bugging me
>> was this one simple thing...
>>
>> My proposed addon 'misc/zulu' is meant for raw beginners. Consequently
>> I want them to "require" it in as easy a way as possible.
>>
>> I've just been experimenting with one of my own addons: math/uu. The
>> easiest way for me to offer different modes is to have a separate
>> loader-script for each mode, all residing in the ~addons/math/uu/
>> folder.
>>
>> Turns out this is the easiest for the novice user to use and remember, too.
>>
>> And that's all down to something Raul tells me I didn't know: namely
>> that (say) ...
>>    load 'math/uu/9'
>> will successfully load a file called: jpath '~addons/math/uu/9.ijs'
>> Ditto...
>>    load 'math/uu/trace'
>> will successfully load a file called: jpath '~addons/math/uu/trace.ijs'
>> ...and with that I'm home and dry.
>>
>> BTW counterintuitively (to me anyway), the following will *not* work
>> (and I was well aware of it) ...
>>    load 'math/uu/9.ijs'
>> not found: /Applications/j602/math/uu/9.ijs
>> |file name error: script
>> |       0!:0 y[4!:55<'y'
>>
>> ...It needs:
>>    load '~addons/math/uu/9.ijs'
>> >>> mode script: 9.ijs --loaded
>>
>> ...But then *this* doesn't work:
>>    load '~addons/math/uu/9'
>> not found: /Applications/j602/addons/math/uu/9
>> |file name error: script
>> |       0!:0 y[4!:55<'y'
>>
>> ...That's going to be a minefield for the novice. It takes long
>> experience to get familiar with all that.
>>
>> It was rough edges like this that made me yearn for a more robust form
>> of "load/require" statement.
>> This was the real burden of my elaborate query. Because I knew such
>> things get up the nose of a novice, making them despair of ever being
>> sure what they're doing.
>>
>> I contemplated a fix to getscripts_j_ so that...
>>    >getscripts_j_ 'math/uu9'
>> ...would return:
>> /Applications/j602/math/uu/uu9
>> ...instead of:
>> /Applications/j602/math/uu9/uu9
>> This would help a lot, I thought.
>>
>> But then while playing about with all this, it occurred to me I could
>> make it simpler still...
>> I could contrive to insert entries into PUBLIC_j_
>> ...which is built, I think, by: jpath '~system/extras/config/scripts.ijs'
>> ...A simple change to the base package, of an uncontentious nature, I trust.
>>
>> Then I could offer a choice of:
>>    require 'zulu'
>>    require 'zulu1'
>>    require 'zulu2'
>>    ...
>>    require 'zulu9'
>>
>> What could be simpler?
>>
>> Well, now I've mulled it over for half a day, that's the way to go, I guess.
>>
>> Ian
>>
>> On Thu, Sep 6, 2012 at 9:54 PM, Raul Miller <[email protected]> wrote:
>> > On Thu, Sep 6, 2012 at 3:39 PM, Ian Clark <[email protected]> wrote:
>> >> Re-reading this thread I think my terse reply could be taken for curt.
>> >> I apologise if this has given offence.
>> >
>> > No offense taken.
>> >
>> > Disorientation on the other hand?  I have been taking some of that...
>> >
>> >> 1. Is there a recommended way of doing this, viz offerring and
>> >> specifying a load with a mode qualifier?
>> >>
>> >> 2. Is there a need for such a facility? In what form?
>> >>
>> >> From your reply I can infer the answer to 1. is No. Because otherwise
>> >> you would have pointed me at it.
>> >
>> > This is not strictly the case.  However, It Is Not That Simple (and
>> > maybe I want to keep my disorientation to myself...)
>> >
>> >> On the other hand there might indeed be a recommendation, which is
>> >> Don't Do It. And Don't Even Think Of It, because it risks causing a
>> >> lot of trouble for the implementation of "require".
>> >
>> > For some cases of "load differently", yes, this is the probably the
>> > case.  Specifically, if there are significant differences which are
>> > visible after the load, I would advise against "modal loading".
>> >
>> > However, for other cases of "load differently", it might be no big
>> > deal.  Specifically, if you only notice the differences while the
>> > files are being loaded (for example: optional diagnostics being
>> > emitted to the session, describing the progress of the load), then
>> > this could be a reasonable thing.
>> >
>> > ...
>> >
>> >> I do need a way of loading different combinations of scripts when my
>> >> proposed addon 'misc/zulu' is first loaded. If there's no recommended
>> >> way of doing this then I'll cobble up my own. But It would be nice if
>> >> the different "load" options were (almost) as easy to specify as a
>> >> simple "load misc/zulu" . I would expect the user of "require" to
>> >> accept the addon in whatever mode it has been loaded, and to
>> >> understand that any mode qualifier only applies on first loading.
>> >
>> > If your requirement is to actually load different contents, then I
>> > would present this as different files to be loaded (or required).
>> >
>> > In other words:
>> >
>> > require 'misc/zulu/normal'
>> >
>> > NB. or
>> >
>> > require 'misc/zulo/trace'
>> >
>> > Note also that the "trace" file(s) could require the "normal" file(s),
>> > if that helps you.  (But why would you not want to be able to switch
>> > trace on and off after the load?)
>> >
>> > If your requirement is to give optional diagnostics on the loading
>> > process then I would check for the existence of a control variable in
>> > a locale which is "owned" by your loading process.
>> >
>> > In other word:
>> >
>> > load 'misc/zulu' [ TRACE_zulu_=: 1
>> >
>> > Your implementation might then look something like this:
>> >
>> > cocurrent 'zulu' NB. or coclass...
>> > ...
>> > 3 :0''
>> >   if. 0 = nc <'TRACE' then.
>> >     NB. debug stuff goes here
>> >   end.
>> > )
>> >
>> > Here, a bare load would get normal behavior.  Defining the name with a
>> > noun would get the debug behavior.  If you like you could forcibly
>> > turn the load tracing behavior off, after possibly previously enabling
>> > it:
>> >
>> > load 'misc/zulu' [ erase 'TRACE_zulu_'
>> >
>> > I hope this helps,
>> >
>> > --
>> > Raul
>> > ----------------------------------------------------------------------
>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>
> --
> regards,
> ====================================================
> GPG key 1024D/4434BAB3 2008-08-24
> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to