Luckily, the nice thing about functional "design patterns" as invented by the haskell community always have mathematical laws attached to them.
The advantage of having formal laws is that functional programmers can reason mathematically about their design patterns.
This is completely different from the OOP case, where a "design pattern" is something someone found useful X number of times, with no rhyme or reason for structuring things this way. Which is why, in my opinion, it's so hard to talk about OOP design patterns beyond "it seems to fit".
This is completely unlike the OOP community, where a design pattern has a poor spec written in english.
It’s the difference between the engineer’s approach and a mathematician’s one. (Physicists, they just write FORTRAN.) To be fair, design patterns were quite explicitly introduced as ”these are things OO people seem to reinvent and converge on, so seemed worth documenting.”
The advantage of having formal laws is that functional programmers can reason mathematically about their design patterns.
This is completely different from the OOP case, where a "design pattern" is something someone found useful X number of times, with no rhyme or reason for structuring things this way. Which is why, in my opinion, it's so hard to talk about OOP design patterns beyond "it seems to fit".
This is completely unlike the OOP community, where a design pattern has a poor spec written in english.