Template Haskell: Cycle in type synonym declarations
`type-level-numbers-0.1` doesn't build with 7.0.1 RC 1. Here's the essence:
```
{-# LANGUAGE TemplateHaskell #-}
module Q where
data Z
type N0 = $( [t| Z |] )
type N1 = $( [t| Z |] )
```
```
$ ghc --make m.hs
[1 of 1] Compiling Q ( m.hs, m.o )
m.hs:7:1:
Cycle in type synonym declarations:
m.hs:7:1-23: type N0 = $([t| Z |])
m.hs:8:1-23: type N1 = $([t| Z |])
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 7.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Template Haskell: Cycle in type synonym declarations","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"7.0.1","resolution":"Unresolved","owner":{"tag":"OwnedBy","contents":"simonpj"},"version":"7.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"`type-level-numbers-0.1` doesn't build with 7.0.1 RC 1. Here's the essence:\r\n\r\n{{{\r\n{-# LANGUAGE TemplateHaskell #-}\r\nmodule Q where\r\n\r\ndata Z\r\n\r\ntype N0 = $( [t| Z |] )\r\ntype N1 = $( [t| Z |] )\r\n}}}\r\n\r\n{{{\r\n$ ghc --make m.hs\r\n[1 of 1] Compiling Q ( m.hs, m.o )\r\n\r\nm.hs:7:1:\r\n Cycle in type synonym declarations:\r\n m.hs:7:1-23: type N0 = $([t| Z |])\r\n m.hs:8:1-23: type N1 = $([t| Z |])\r\n}}}\r\n","type_of_failure":"OtherFailure","blocking":[]} -->
issue