I was taught functional first in high school, we had OCaml for 3 years, or so (starting from basic stuff like "hello world" and factorials and up to advanced stuff with OpenGL and complex algorithms). Also came with lambda calculus and related math. I was not really into programming back then (and did not really spend a lot of time on assignments), so I cannot say I understood and knew a lot and and rediscovered everything I was taught several years later.