procedure main() while writes("List? ") & line := read() do line ? if sum := list(line) & pos(0) then write(line, ": sum is ", sum) else write(line, ": invalid") end procedure list() ="[]" & suspend 0 ="[" & sum := values() & ="]" & suspend sum end procedure values() num := value() & ="," & sum := values() & suspend num + sum suspend value() end procedure value() suspend (list() | tab(many(&digits))) end