func ElicitAction(d dynamics.Dwimmer, context *term.SettingT, setting *term.Setting) dynamics.Transition { for { Q := FallThrough.T(represent.Setting(setting)) result := dynamics.SubRun(d, Q, context) switch result.Head() { case TakeTransition: transition, err := represent.ToTransition(d, result.Values()[0]) if err == nil { return transition } case core.OK: default: result, err := d.Answer(TransitionGiven.T(result, Q)) if err == nil { transition, err := represent.ToTransition(d, result) if err == nil { return transition } } } } }
func setTransition(d dynamics.Dwimmer, s *term.SettingT, quotedTransition, quotedSetting term.T) term.T { transition, err := represent.ToTransition(d, quotedTransition) if err != nil { return term.Make("asked to set a setting to transition [], "+ "but while converting to a transition received []").T(quotedTransition, err) } setting, err := represent.ToSetting(d, quotedSetting) if err != nil { return term.Make("asked to set a transition in setting [], "+ "but while converting to a setting received []").T(quotedSetting, err) } d.Save(setting, transition) return core.OK.T() }