Function programming in Go is a paradigm shift, a fundamentally different approach to the way we write software. Just like we can get the results we want with an imperative Turing Machine or with Lambda Calculus, we can choose to code imperatively with idiomatic Go or declaratively using the FP style of programming.
We began our journey with a light introduction to FP. We learned how to write intermediate functions like Map
, Filter
, and Sort
, as well as terminal functions like Reduce
and Join
, to transform collections. We saw how to use tools like Gleam and Itertool and implemented lazy evaluation using Go routines and a Go channel.
We thought about the characteristics of FP and worked through examples of function composition, closures, and high order functions.
We studied both the imperative-functional and pure-functional styles of software design (and later mixed both styles). We learned how the Reader/Writer interface in Go implements the single responsibility principle. Just one...