The capability of learning is a prerequisite for autonomy. Autonomous intelligent agents, who solve problems in a realistic environment need to learn in order to extend the classes of problems they can solve, to improve their performance on these problems, and to improve the quality of the solutions they produce. One way in which an intelligent agent may effectively use its experiences to learn, is by reflection upon its own problem-solving process. To do that, the agent needs to have an explicit meta-model of its own reasoning and knowledge. This work takes a functional stance towards reflective learning. This stance gives rise to a specific computational model which is based on three major hy- potheses: (i) agents can be viewed as abstract devices, (ii) their reasoning can be understood in terms of structure-behavior-function (SBF) models, and (iii) learning can be viewed as a self-redesign task in which the agent uses its understanding of its own reasoning to improve its subsequent performance.