Back in my 2nd year in college (1990), I took a half year course on functional programming. Back then, having several years of heavy duty Z80 assembly videogames programming, and being recently introduced to high level languages via Pascal and Modula 2, my brain was very fresh and open to new paradigms and ideas. Structured languages like Pascal and C were a great way to remove some of the tedium and bureaucracy of assembly, but functional was mindblowing. I already understood the idea of passing functions around as parameters, since we did a lot of that in our semi-OOP approach to game character behaviour. But when you create your first infinite list, wow, that’s a moment to remember!