2.6. ЗНАЧЕНИЯ ПЕРЕМЕННЫХ И СРЕДЫ Вычисление любой конструкции Рефала Плюс требует знания значений переменных, входящих в эту конструкцию. Эта информация о значениях переменных естественным образом представляется в виде функции с конечной областью определения, ставящей в соответствие каждой переменной из ее области определения значение этой переменной. А именно, пусть Env - среда с областью определения {V1, ..., Vn}. Тогда Env(Vj) = Oej является значением переменной Vj. Такую среду мы будем обозначать через
{V1 = Oe1, ..., Vn = Oen}.
В частности, пустая среда будет обозначаться через {}. Область определения среды Env мы будем обозначать через dom[Env]. Таким образом,dom[ {V1 = Oe1, ..., Vn = Oen} ] = {V1, ..., Vn}.
При этом, без дальнейших оговорок, мы всегда будем предполагать, что переменные обязательно имеют значения, соответствующие их типам. Т.е. значениями s-переменных могут быть только символы, значениями t-переменных - только объектные термы, значениями e-переменных - произвольные объектные выражения, а значениями v-переменных - непустые объектные выражения. В дальнейшем Env+Env' будет означать пополнение среды Env значениями переменных из среды Env', которое строится следующим образом.dom[Env+Env'] содержит все
переменные из dom[Env'], а также
все переменные из dom[Env],
индексы которых отличаются от индексов
переменных из dom[Env']. Для любой переменной V из dom[Env+Env'], если Env'(V) определено, то (Env+Env')(V) = Env'(V), а если Env'(V) не определено, то (Env+Env')(V) = Env(V). |
Например,
{sX = 1, sY = 2} + {sY = 200, sZ = 300}
= {sX = 1, sY = 200, sZ = 300}
{sX = 1, sY = 2} + {eY = 200, sZ = 300}
= {sX = 1, eY = 200, sZ = 300}