Basically this blog is full of examples showing the algebra of its graph type in detail:
https://blogs.ncl.ac.uk/andreymokhov/graphs-in-disguise/
https://blogs.ncl.ac.uk/andreymokhov/graphs-a-la-carte/
https://blogs.ncl.ac.uk/andreymokhov/an-algebra-of-graphs/
I find this post very fascinating, since I also have explored a similar graph data type, but ultimately found that my type could only represent weakly connected graphs. See
http://www.hansdieterhiep.nl/2017/05/21-graph.pdf
The difference between the my data type and OP’s is as follows, respectively:
data Graph n = Vertex n | Combine (Graph n) (Graph n)
cf.
data Basic a = Empty | Vertex a | Overlay (Basic a) (Basic a) | Connect (Basic a) (Basic a)
Basically this blog is full of examples showing the algebra of its graph type in detail:
https://blogs.ncl.ac.uk/andreymokhov/graphs-in-disguise/
https://blogs.ncl.ac.uk/andreymokhov/graphs-a-la-carte/
https://blogs.ncl.ac.uk/andreymokhov/an-algebra-of-graphs/
I find this post very fascinating, since I also have explored a similar graph data type, but ultimately found that my type could only represent weakly connected graphs. See
http://www.hansdieterhiep.nl/2017/05/21-graph.pdf
The difference between the my data type and OP’s is as follows, respectively:
cf.