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.