Computable
Functions which are computable but whose computation may require the use of “until” loops (as well as “for” loops) are partial computable. They are “partial” in the sense that their domain is the subset of on which the program eventually halts. If a partial computable function is defined for all inputs then it is said to be total computable. A relation is decidable/computable if its characteristic function is computable. (Note that a characteristic function is everywhere defined.)
primitive recursive (total) computable partial computable
The Ackermann function is computable and is defined for all , but it is not primitive recursive. It was introduced in 1928 by Ackermann, working on Hilbert’s program, in order to show the existence of a “computable” function which was not captured by the concept of primitive recursive. At that time the precise notion of a computable function was unknown.