A recursive type explicitly names a type in terms of itself. Notation binds within . A programming language must specify whether unfolding gives type equality or requires explicit operations; this is outside the finite simple type grammar used here. See Benjamin C. Pierce's treatment of recursive types in chapters 20–21. [ref]
https://www.cis.upenn.edu/~bcpierce/tapl/contents.pdf. Pierce, Types and Programming Languages (2002), author-hosted contents, chapters 20–21
New to topics? Read the docs here!