Если тот, кто спрашивал совета как обучиться программированию еще здесь, то я бы посоветовал такую последовательность: изучить понятия операционной, денатоционной и аксиоматической семантики, почитать статьи Гордона Плоткина и Гленна Винскеля. Затем перейти к лямбда исчислению. Затем уже можно изучить какой-нибудь функциональный язык вроде Хаскеля (уже понимая, что многие вещи являются синтаксическим сахаром).
Затем нужно погрузиться в мат.логику: proof theory, model theory и в конце category theory. Понимая как это все устроено, можно устраиваться на работу и приобретать промышленный опыт.