<br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Notice that Scenario depends on a list of steps and Step has a dependence with scenario. I know that this is a kind of &quot;bad smell&quot;.... in Haskell, are there any pattern or language idiom to deal with cyclical dependences?
</blockquote><div><br>Just a little something to add, this is not a &quot;bad smell&quot; at all... in fact, recursive (including mutually recursive) data types are the bread and butter of Haskell (and functional languages in general).&nbsp; For example:
<br><br>data BinTree a = Empty | Branch a (BinTree a) (BinTree a)<br><br>This says that a binary tree containing &#39;a&#39;s is either Empty, or a Branch consisting of an &#39;a&#39; and two binary trees.&nbsp; This isn&#39;t stinky, it&#39;s quite elegant.&nbsp; Your Scenario and Step data types look just peachy from an idiomatic point of view; the solution (as others have pointed out) is to use data declarations rather than type synonyms.
<br><br>-Brent<br></div></div>