Adaptive systems are designed to modify their behaviour in response to changes of their operational environment. We adopt a language-based approach to the development of such systems, with particular attention to preventing them from failures in adaptation. The kernel of our proposal is a simple core language, equipped with a type and effect system that computes a sound approximation of program behaviour. The effect is exploited at loading time to verify that programs correctly adapt themselves to all possible running environments.
展开▼