>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь
I. Локативы
Локатив abc_f_ ссылается на имя abc
в поле имен f; косвенный локатив abc__xy
ссылается на abc в поле имен, название которого является
текущим значением xy. Для совместимости с предыдущими версиями
принимается и нестандартный локатив abc__ ,
эквивалентный abc_base_. Тоесть:
b=: 1
Rome=: 2
Rome_NewYork_=: 20
f_NewYork_=: 3 : '3*b=: Rome+y'
f_NewYork_ 10
90
b,Rome
1 2
b_NewYork_
30
Имя является глобальным, если оно не присвоено =.
внутри явного определения (:).
Любое глобальное имя исполняется в текущем поле имен.
В начале, текущим является поле имен base.
Локатив f_abc_, во время своего исполнения
переключает текущее поле имен на abc.
Глагол 18!:4
так же переключает текущее поле имен,
а 18!:5 возвращает
его название.
Имя f_abc_ выполняется в поле имен abc
в том смысле, что любое глобальное имя, на которое происходит ссылка
в f , ищется в abc, и, если не найдено,
в пути поиска поля имен abc
(но выполняется все равно в abc).
Путь поиска поля имен, изначально установлен в ,<,'z' ,
кроме поля z , изначально имеющего пустой путь.
Его можно изменить при помощи 18!:2 .
Имена в полях имен обычно создаются сценарием, при помощи соответствующего
выбора имени глагола, используемого для его выполнения.
Например, если файл stats содержит сценарий:
mean=: sum % #
sum=: +/
Тогда:
ssx_z_=: 0!:10 Выполнение сценария без вывода
ssx_a_ <'stats' Заполнить поле имен a
mean=: 'in base locale'
mean_a_ 3 4 5
4
ssx_bc_ <'stats' Заполнить поле имен bc
sum_bc_ 3 4 5
12
Этот пример так же иллюстрирует использование путей поиска имен
(состоящего из поля имен z ): Сначала,
утилита ssx определяется в z .
При выполнении ssx_a_, ssx не обнаруживается в
поле имен a и, соответственно, ищется (и находится) в
поле имен z. Поскольку ssx_a_ выполняется
в поле имен a, имена из сценария stats
определяются в поле имен a, наполняя
его.
Подобное происходит и для ssx_bc_.
См. 18!: в
Приложении A, а так же лабораторные “Locales” и “Object Oriented Programming”, распространяемые с системой.
>>
<<
Ркв
Ввд
JfC
LJ
Фрз
Слв
Изм
Рзг
!:
Помощь
Словарь