This blog post explains the architecture of GHC and gives great examples of desugaring to the minimal Core language inside GHC's implementation: https://serokell.io/blog/haskell-to-core (compare with the brief summary of desugaring in https://www.haskellforall.com/2014/10/how-to-desugar-haskell-code.html)