- By Javier Martínez
- ·
- Posted 10 Aug 2021
Functional patterns
Welcome pythonistas! In our last video session on design patterns we focused exclusively on patterns for the object oriented paradigm (OOP). To some..
While working on katas to test the functional calisthenics I realized that some of the rules were not going to be covered by the rules for the katas that I had choosen. Therefore, some additional rules/premises/requirements to the katas were needed. Here I have three of the katas that we have used in the past for OOP and one kata that came out of the HN discussion on the post.
The easiest kata in this post (on its original form), but still difficult enough to pose a bit of a challenge. The main point of the changes revolves around the interactivity of the system. Probably this change makes it the more difficult of the lot to handle using the rules.
Of the katas on this post is the one on which more concepts are present. Which makes it interesting when comparing the solution with OOP. Use of the side effects at the boundaries is explicit with the changes introduced to the rules.
The kata itself is interesting because of the already present dependency on date. The change added is to reflect the rule of side effects at the boundaries. Also, because of the use of an external file/database is easy to think about the use of infinite sequences.
The objective is to place 8 chess queens on a standard chess board without the queens checking each other.
None
The idea of doing this kata as part of the list of katas to use for functional calisthenics came out of the discussion on Hacker News linked above. One of the solutions to the kata, and the one I used the only time I have completed it, uses recursion with backtracking. But one of our rules says no use of explicit recursion. I am currently working on it, so a pointer for you is the use of reduce in which the accumulator is a collection of boards with the state after placing a queen. I have also to look into Philip's Wadler paper regarding the List of successes method (paywall)
Original Photo by Jason Briscoe on Unsplash
Welcome pythonistas! In our last video session on design patterns we focused exclusively on patterns for the object oriented paradigm (OOP). To some..
Solving a simple problem in Elixir In this article, I am going to solve the Word Count problem from Exercism in Elixir. I'll start with a form that..
Crafting web apps using finite state machines - Part 1 Code on Gitlab
Join our newsletter for expert tips and inspirational case studies
Join our newsletter for expert tips and inspirational case studies