def retract_bindings(fstruct, bindings, fs_class=u'default'):
 if (fs_class == u'default'):
  fs_class = _default_fs_class(fstruct)
 (fstruct, new_bindings) = copy.deepcopy((fstruct, bindings))
 bindings.update(new_bindings)
 inv_bindings = dict(((id(val), var) for (var, val) in bindings.items()))
 _retract_bindings(fstruct, inv_bindings, fs_class, set())
 return fstruct

def retract_bindings ( fstruct , bindings , fs_class = u'default' ) : if ( fs_class == u'default' ) : fs_class = _default_fs_class ( fstruct ) ( fstruct , new_bindings ) = copy . deepcopy ( ( fstruct , bindings ) ) bindings . update ( new_bindings ) inv_bindings = dict ( ( ( id ( val ) , var ) for ( var , val ) in bindings . items ( ) ) ) _retract_bindings ( fstruct , inv_bindings , fs_class , set ( ) ) return fstruct
return the feature structure that is obtained by replacing each feature structure value that is bound by bindings with the variable that binds it .