[Jprogramming] detecting name-clash in _z_
Ian Clark
earthspotty at gmail.com
Mon Oct 10 05:02:43 HKT 2011
> But, if I recall, it only stores the name if it's
> altered, not if it's created... which is just what I want. (But I'm
> going to have to test that...!)
Wrong. It treats "created" the same as "changed". No good.
I think I shall use it anyway to save a list of names changed. Then
the next time the script is loaded, test the saved list against _z_ to
look for clashes. Inelegant... but workable, I think.
On Sun, Oct 9, 2011 at 9:52 PM, Ian Clark <earthspotty at gmail.com> wrote:
> 4!:5 (Name Changed) ... that's what I'm looking for.
>
> Silly of me, because I'd used it before, in another context, and
> forgotten about it.
>
> If I recall though, it isn't really "changed" but "overwritten" (maybe
> with the same). But, if I recall, it only stores the name if it's
> altered, not if it's created... which is just what I want. (But I'm
> going to have to test that...!)
>
> A temporary lockdown of existing _z_ would be nice. But I need it
> mainly for non-pronouns. And plan to migrate it to J7.
>
>
> On Sun, Oct 9, 2011 at 9:34 PM, Dan Bron <j at bron.us> wrote:
>> Couple of points. You can detect name changes with 4!:5 [1] and the names returned will be fully qualified, meaning you'll be able to identify what locale the changed name is in. I'm not in front of an interpreter right now, but it's something along the lines of:
>>
>> 4!:5&.>i.2 NB. Top of script
>> NB. Body of script
>> 'A B'=.4!:5&.>i._2 NB. End of script
>> assert 0 = #expected_z_names -.~ (#~(,'z')=(}.~1+i:&'_')@:}:&.>) B
>>
>> Also, FYI, J has an undocumented feature that allows the definitions of names to be locked. That is, names can be assigned once, then marked as read-only. You could leverage this feature to query all the names in the z locale (in its unaltered state, before you load your script), then set them as readonly: subsequent assignment to these names would fail with a a 'readonly data' error. Like so (again untested because there is no J for the iPad and jum is down):
>>
>> require 'jmf'
>> 1 readonly_jmf_&.> namelist_z_ i. 4
>>
>> Well, with one caveat: you have to use J601, or only care about locking the definitions of nouns (ie replace i.4 with 0). J602 introduced a change that prevents that and later versions from locking the definitions of non-pronouns (or really getting under the covers of non-pronouns for any reason). For details, see [2].
>>
>> -Dan
>>
>> [1] Definition of 4!:5 : http://www.jsoftware.com/help/dictionary/dx004.htm#5
>>
>> 4!:5 y Names Changed. 4!:5]0 turns off data collection; 4!:5]1 turns it on and produces a list of global names assigned since the last execution of 4!:5 .
>>
>> [2] Readonly names and 15!:6: http://www.jsoftware.com/pipermail/general/2008-November/032554.html
>>
>>
>>
>>
>>
>> On Oct 9, 2011, at 1:28 PM, Ian Clark <earthspotty at gmail.com> wrote:
>>
>>> It's not the top-level call that's the worry. It's all the little
>>> "specials" I put in _z_ myself.
>>>
>>>
>>> On Sun, Oct 9, 2011 at 6:16 PM, Henry Rich <HenryHRich at nc.rr.com> wrote:
>>>> I try when possible to avoid exporting function names. If the user
>>>> wants to run finesse in the package bridge, he can write
>>>>
>>>> finesse_bridge_
>>>>
>>>> can't he? If he wants to cover that with a name in z, that's his business.
>>>>
>>>> Henry Rich
>>>>
>>>> On 10/9/2011 12:57 PM, Ian Clark wrote:
>>>>> That's the long way round. (I reckon I can do that.)
>>>>>
>>>>> I only need the warning (for the end-user). Plus maybe the names
>>>>> clashed (for the customer to give to the helpline).
>>>>> The aim is to help with new customers hitting time-consuming
>>>>> installation problems.
>>>>>
>>>>>
>>>>> 2011/10/9 Björn Helgason<gosinn at gmail.com>:
>>>>>> Do you need to get a copy of all the objects?
>>>>>>
>>>>>> Would it be enough to have a database with information about the objects?
>>>>>>
>>>>>> In the case of verbs you could place a copy of the visual representation of
>>>>>> the verb into a noun and take its vital info into the database.
>>>>>>
>>>>>> You could then put a time stamp on the info when you registered the info.
>>>>>>
>>>>>> 2011/10/9 Ian Clark<earthspotty at gmail.com>
>>>>>>
>>>>>>> As a (paranoid?) safety device in a "fit'n'forget" utility, I'm trying
>>>>>>> to write code to go in a given script which will warn when that script
>>>>>>> will unintentionally alter -- or has altered -- an existing name in
>>>>>>> the _z_ locale.
>>>>>>>
>>>>>>> NB: "alter", not merely "overwrite" -- though a slick way of detecting
>>>>>>> overwrite would be worth knowing too. APL+Win attaches a timestamp to
>>>>>>> each fn, which makes this task easy.
>>>>>>>
>>>>>>> It would be nice not to have to maintain -- by-hand -- an explicit
>>>>>>> list up-front, of names created by the script.
>>>>>>>
>>>>>>> An allied question: how best can I "snapshot" a given locale -- such
>>>>>>> as _z_? That is: create a second temporary locale _sav_ with identical
>>>>>>> contents? I can only think of brute-force: enumerating the names in
>>>>>>> _z_ and copying them one-by-one to _sav_.
>>>>>>> ----------------------------------------------------------------------
>>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Björn Helgason, Verkfræðingur
>>>>>> Fornustekkum II
>>>>>> 781 Hornafirði,
>>>>>> t-póst: gosinn at gmail.com
>>>>>> gsm: +3546985532
>>>>>> twitter: @flugfiskur
>>>>>> http://groups.google.com/group/J-Programming
>>>>>>
>>>>>>
>>>>>> Tæknikunnátta höndlar hið flókna, sköpunargáfa er meistari einfaldleikans
>>>>>>
>>>>>> góður kennari getur stigið á tær án þess að glansinn fari af skónum
>>>>>> /|_ .-----------------------------------.
>>>>>> ,' .\ / | Með léttri lund verður |
>>>>>> ,--' _,' | Dagurinn í dag |
>>>>>> / / | Enn betri en gærdagurinn |
>>>>>> ( -. | `-----------------------------------'
>>>>>> | ) | (\_ _/)
>>>>>> (`-. '--.) (='.'=) ♖♘♗♕♔♙
>>>>>> `. )----' (")_(") ☃☠
>>>>>> ----------------------------------------------------------------------
>>>>>> 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
>
More information about the Programming
mailing list