Partial closures and semantics of while: Towards an iteration-based theory of data types