iterate
literate(action, continue, State) =
continue(State) ?
  iterate(action, continue, action(State))
: State;
l
conditional expression (as in C++, Java)
P ? A : B
means if P is true then the value of the expression is A;
otherwise it is B.