Looks very interesting. I’d be interested in seeing reviews.
I bought it and have done a read through. I’m interested in algebraic structures as building blocks for programming, verification through specifications, and denotative design, and have spent time with all these concepts. I’m probably on the advanced side of the target audience.
The book covers the process of creating “laws” to model a problem, using a mechanical process to create a naive implementation, using tooling to derive quickcheck specs, and then creating a better implementation using those specs as verification you’re not breaking your domain model. The modeling is similar to denotative design though not quite as formal on its notation. It does show that domain problems can be modeled with Monoids, Functors, Functions, etc and includes an appendix to discuss these structures. It uses haskell as it’s code and tooling environment, though I can take the concepts and use them in clojure.
The sample of the book covers the first problem, which I recognized from https://github.com/conal/talk-2014-lambdajam-denotational-design and Conal Elliot’s other work. The second domain problem deals with matching user photos to a location to grant rewards. Think about a scavenger hunt or pokemon go style game. I still need to reread and spend some more time processing this example to really get everything deeply.
I’d have enjoyed another example of a problem domain going through the design phases. Having the first one be from prior sources is fine for introductions to the ideas, but I was hoping to see it applied multiple times to something new.
Seeing the use of tooling over the naive implementation to generate quickcheck specs, even ones not in the original design’s laws, was new to me and cool to see. Also the second example eventually gets complex enough that I think it shows the value of the specs.
Overall, I’m happy with my purchase of the book.
There’s a pretty interesting book called “Algebraic Models for Accounting Systems” that I stumbled onto. You might be curious:
There’s a link to the first few chapters at the bottom of the page.
Really wish this book wasn’t in Haskell, as it looks rather great.
Why is that a bad thing?
Not bad at face value, I just wish that these concepts would be accessible to folks outside the Haskell community. Also, on a personal note, my tastes guide me away from Haskell.