sclass WaitForAnswer_YesNo { S question; persistently swappable S answer(S s) { if (isYes(s)) { cancel(); ret processAnswer(true); } if "no" { cancel(); ret processAnswer(false); } ret otherInput(s); } persistently swappable bool isYes(S s) { ret main isYes(s); } persistently swappable bool isNo(S s) { ret main isNo(s); } persistently swappable S otherInput(S s) { ret "I don't understand. Yes or no?"; } persistently swappable S processAnswer(bool yes) { ret "You said " + yesNo_short(yes); } persistently swappable void cancel() { print("Cancelling"); } }