Free yourself from the underlying representation of your structures!
Abstract your representation and fix your functors
Factoring in software development is the process of decomposing a complex problem or system into constituent parts which are easier to organize, understand, build, and maintain. So why do we refactor so often in our industry?
This talk will introduce the audience to approaches exploited in functional languages supporting parametric polymorphism and higher-kinded types. Leveraging these constructs allows us to re-compose parts of our system in a way that reduces (compared to conventional industrial techniques) the need to refactor large parts. Instead, we define much smaller pieces, passing them as arguments to reusable (already written) generalized patterns of computation.
Not only do we free ourselves from the underlying representation of our structures, this simplifies and reduces ongoing maintenance efforts, but we also get the benefit of termination guarantees and less cumbersome composition of data constructors.
Join on an exploration of the promise of recursion schemes starting out by merely abstracting representation from our program's structure.