It looks hard at the beginning, but functional programming is an oppertunity to discover a new way to represent programs, to approach a problem, and to think about languages1.
I began programming using imperative languages and used imperative languages last 8 years. But doing B521 taught by Dan Friedman in the first semester of my PhD program, inspired me to learn more about functional programming and programming language implementations. I am planning to add every exercise I am doing to this repository for future reference.