The use of a necessity-like modality in a typed λ -calculus can be used as a device for separating the calculus in two separate regions. These can be thought of as intensional vs. extensional data: data in the first region, the modal one, are available as code, and their description can be examined, whereas data in the second region are only available as values up to ordinary equality. This allows us to add seemingly non-functional operations at modal types, whilst maintaining consistency. In this setting the Gödel-Löb axiom acquires a novel constructive reading: it affords the programmer the possibility of a very strong kind of recursion, by enabling him to write programs that have access to their own code. This is a type of computational reflection that is strongly reminiscent of Kleene's Second Recursion Theorem. We prove that it is consistent with the rest of the system.