>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer

# z locale

The `z` locale is the parent locale of all other locales.

If a name is not found in the current locale, and there is a definition for it in the `z` locale, then that definition is used as if it were in the current locale.

The `z` locale is for common utilities that you want to be available everywhere. From the `z` locale, they are available for execution in any locale as if they were in that locale, yet there is only a single copy, and the names in the z locale don't clutter up the names in the other locales.

The profile.ijs that runs when you start J defines many standard utilities in the `z` locale. You have used both the erase and the names verbs which are defined in the `z` locale. You can tell this by the following:

       names 3	NB. verbs in the base locale
    ...

The above does not list names as a name, yet you are able to execute it. This is because when it is not found in the base locale, its definition from the `z` locale is used as if it were in fact defined in the base locale.

       names_z_ 3	NB. verbs in z locale
    ...

The result is too long to list here. The verb names has a dyadic definition that takes a left argument which indicates the first letter of names to return.

        'n' names_z_ 3
    nameclass namelist names nc nl

`names` is defined in the `z` locale and that is the definition that is executed.

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer