Functional and Adaptive Programming