func getTransition(d dynamics.Dwimmer, s *term.SettingT, quotedSetting term.T) term.T { setting, err := represent.ToSetting(d, quotedSetting) if err != nil { return term.Make("asked to get a transition in setting [], "+ "but while converting to a setting received []").T(quotedSetting, err) } result, ok := d.Get(setting) if !ok { return NoCompiledAction.T() } return core.Answer.T(represent.Transition(result)) }
func findAction(d dynamics.Dwimmer, s *term.SettingT, quotedSetting term.T) term.T { setting, err := represent.ToSetting(d, quotedSetting) if err != nil { return term.Make("asked to decide what to do in setting [], "+ "but while converting to a setting received []").T(quotedSetting, err) } transition, ok := d.Get(setting) if !ok { transition := ElicitAction(d, s, setting) d.Save(setting, transition) } return core.Answer.T(represent.Transition(transition)) }
func Suggestions(d dynamics.Dwimmer, s *term.Setting, n int) ([]term.ActionC, []float32) { settings, settingPriorities := analogies(d, s, n) result := []term.ActionC{} priorities := []float32{} buildingResult: for i, other := range settings { t, _ := d.Get(other) simple, isSimple := t.(dynamics.SimpleTransition) if isSimple { action := simple.Action for _, otherAction := range result { if action.ID() == otherAction.ID() { continue buildingResult } } result = append(result, action) priorities = append(priorities, settingPriorities[i]) } } return result, priorities }