Paul Graham’s essays on Lisp and frequent discussions on HackerNews piqued my interest in Functional Programming. Hence I decided to take a deep dive to explore this topic.
Functional programming as a very fascinating history, with Lisp being the second programming language created after Fortran. Lisp was quite popular in universities but it suffered an unfortunate setback due to being associated with the AI Winter. Since then there are two two main Lisp dialects Common Lisp and Scheme. These two languages have several descendants like Clojure, Scala, Racket, etc
I started my FP journey through Brian Harvey’s CS 61A online lectures. These lectures have been extremely interesting and have helped me approach problems in a different manner.
Scheme has an extremely simple syntax, which might seem weird at first glance due to its non C-like syntax. A common syntax like (function/data function/data …) is aplicable for most cases.
Scheme treats data and functions in the same manner. This simple treatment unlocks powerful abstractions which enable us to pass functions as data to functions and return functions when a function is executed.
I am looking forward to gain more insights into Functional programming in future by exploring ML-family of languages and Haskell.