Programy napisane w rożnych językach programowania mogą być przetwarzane przez
inne programy jako dane (np. przez kompilatory). Celem wykładu jest omowienie
wybranych technik transformacji programow w paradygmacie funkcyjnym oraz
przedstawienie ich zastosowań w projektowaniu i implementacji językow
programowania. Będzie mowa m. in. o interpreterach, maszynach abstrakcyjnych,
ewaluacji częściowej i generacji kodu. Punktem wyjścia będzie rachunek lambda
jako prototypowy funkcyjny język programowania. Studenci w ramach ćwiczeń będą
implementować omawiane techniki w wybranym języku (Ocaml, Scheme, Scala).
Wymagania: Logika dla informatykow, Programowanie M, Programowanie funkcyjne
Literatura (wybor):
N. D. Jones, C. G. Gomard, P. Sestoft, "Partial Evaluation and Automatic
Program Generation" .
Poszczegolne wykłady będą opierać się na rożnych źrodłach, głownie artykułach
naukowych.