title: Haskell recursive/circular module definitions?
body: <p>I have two modules which imports each other. Haskell doesn't support recursive modules. So how can i rewrite my data types without needs circular module system.</p>
  
  <p>Here is my Character.hs</p>
  
  <pre><code>module Character where
  import ItemSystem
  
  data Character = Character { name :: String, items :: [Item] }
  </code></pre>
  
  <p>an here is ItemSystem.hs</p>
  
  <pre><code>module Item where
  import Character
  
  data ItemEffect = CharacterEffect (Character -&gt; Character)
                  | ItemEffect      (Item -&gt; Item)
  
  data Item = Item { name :: String, weight :: Int, effect :: ItemEffect }
  </code></pre>
  
  <p>UPDATE: I will write my all datatypes into one module :( . </p>