Пример #1
0
 def tag(self, source, v):
     internal = len(self.internal)
     self.internal[v.id] = internal
     self.original[internal] = v
     self.changed[internal] = False
     self.current[internal] = v
     self.updates[internal] = updates.trivial()
     self.source[internal] = source
Пример #2
0
 def propagate_back(s):
     if s.head == term.because.head:
         return propagate_back(s['operation'])
     elif s.head == term.explain.head:
         return propagate_back(s['operation']) or propagate_back(s['prior'])
     elif s.head == term.accessing.head:
         if change.head == updates.trivial.head:
             parent = s['term']
             binding = s['binding']
             return self.update(
                 updates.trivial(),
                 parent,
                 repr_change=updates.apply_to_field(
                     representations.referent_of(T.from_str(binding)),
                     repr_change
                 ).explain("tracing backwards from [v]", v=v)
             )
         else:
             return False
     elif s.head == askers.answering.head:
         Q = s['Q']
         if Q.head == fields.get_field.head:
             parent = Q['object']
             field = Q['field']
             return self.update(
                 updates.apply_to_field(field, change), 
                 parent, 
                 repr_change=updates.apply_to_field(updates.lift_field(field), repr_change)
             )
         elif Q.head == convert.convert.head:
             previous = Q['value']
             return self.update(
                 change,
                 previous,
                 repr_change=None
             )
     return False
Пример #3
0
 def set_repr(self, v, new_repr):
     self.update(updates.trivial(), v, repr_change=updates.become(new_repr))
Пример #4
0
import convert
import representations
import properties
import updates
import outlines
import builtins
import computations
import term
import termtypes
import state
import views
import functions
import strings
from term import Term as T

k = updates.update(updates.trivial(), T.from_int(0))
d = T('test [a]', a=k)
Q = T('a question about [this]', this=k)
asker = ask.Asker(Q)

a = T('a')
b = T('b')
c = T('c')

l1 = T.from_list([a, b, c])
l2 = T.from_list([a, a, a])

l12 = lists.zip(l1, l2)

d = dictionaries.from_items(l12)