}
};
Далее, поскольку внутренний цикл в теле предиката Сумма не имеет нормального выхода, можно заменить оператор #2 на break и убрать скобки оператора продолжения ветви. Подставим определение числоВстроке на место вызова, а затем определение предиката Сумма в тело СуммаСтроки. Получим:
СуммаСтроки(string s: nat n) (7.38)
{ n = 0;
for (; ;) {
for (; ;) {
if (s = nil) return
{ char e = s.car || s = s.cdr };
if (цифра(e)) break
}
nat v = val(e);
for (; ;) {
if (s = nil) break
{char b = s.car || s = s.cdr};
if (цифра(b)) v = v * 10 + val(b)