Hi,<br><br>Stefan and Isaac, thx for providing quick advice. <br><br>@Stefan: Unfortunately I have to use a list.<br>@Isaac: I do not get it. Could you please provide a short example of your approach?<br><br>The question still remains. Which arguments do I have ghc to start with to 
<br>get the same behavior than hugs with -98 +o (here it works). <br><br>I provide my example for testing purposes:<br><br>module Test where<br>import Test.QuickCheck<br>import Monad(liftM,liftM2)<br><br>type Program = [Stmt]
<br>data Stmt = Text | IfElse Program Program | While Program deriving (Eq, Show)<br><br>instance Arbitrary [Stmt] where<br>&nbsp; arbitrary = sized genProg<br>instance Arbitrary Stmt where<br>&nbsp; arbitrary = sized genStmt<br><br>
genStmt::Int-&gt;Gen Stmt<br>genStmt 0 = return Text<br>genStmt 1 = return Text<br>genStmt 2 = oneof [return Text, return (While [Text])]<br>genStmt n | n&gt;2 = oneof ([return Text,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; liftM While (genProg (n-1))]++
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [liftM2 IfElse (genProg k) (genProg (n-k-1))|k&lt;-[1..n-2]])<br><br>genProg::Int-&gt;Gen Program<br>genProg 0 = return []<br>genProg 1 = return [Text]<br>genProg n | n&gt;1 = oneof ((liftM (\x-&gt;[x]) (genStmt n)):[liftM2 (:) (genStmt k) (genProg (n-k))|k&lt;-[1..n-1]])
<br><br>prop_ConstructParse progr = True<br>&nbsp; where types = progr::Program<br><br>main = mapM_ (\(s,a) -&gt; putStrLn s &gt;&gt; a) [(&quot;flowchart construct and parse&quot;, test prop_ConstructParse)]<br><br><br><div><span class="gmail_quote">
2007/12/4, Stefan O&#39;Rear &lt;<a href="mailto:stefanor@cox.net">stefanor@cox.net</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, Dec 04, 2007 at 03:36:20PM +0100, Steffen Mazanek wrote:<br>&gt; Hello,<br>&gt;<br>&gt; I want to quickcheck a property on a datatype representing<br>&gt; programs (=[Stmt]) and need to define a specific instance<br>
&gt;<br>&gt; instance Arbitrary [Stmt]<br>&gt;<br>&gt; (mainly to restrict the size of the list).<br>&gt;<br>&gt; In quickcheck an instance Arbitrary of lists is already defined.<br>&gt; Which parameters do I have to give ghc such that it accepts
<br>&gt; such an instance? In hugs -98 +o is enough. I have<br>&gt; tried -XOverlappingInstances, -XFlexibleInstances and also<br>&gt; -XIncoherentInstances, however I still got an overlapping<br>&gt; instances error for this declaration.
<br><br>You shouldn&#39;t use lists if you need to have special instance behavior -<br>lists are for perfectly ordinary sequences of things.&nbsp;&nbsp;If a program is<br>just a bunch of unrelated statements, then use [], otherwise use a
<br>custom (new)type.<br><br>Stefan<br><br>-----BEGIN PGP SIGNATURE-----<br>Version: GnuPG v1.4.6 (GNU/Linux)<br><br>iD8DBQFHVcxTFBz7OZ2P+dIRAmtMAJ9xcL0xhG9u+QaIFXwhEEq177ePEgCfUfOf<br>dlDMHAN8ldq2qZ7ctOFkNb4=<br>=hxkS<br>
-----END PGP SIGNATURE-----<br><br></blockquote></div><br><br clear="all"><br>-- <br>Dipl.-Inform. Steffen Mazanek<br>Institut für Softwaretechnologie<br>Fakultät Informatik<br><br>Universität der Bundeswehr München<br>85577 Neubiberg
<br><br>Tel: +49 (0)89 6004-2505<br>Fax: +49 (0)89 6004-4447<br><br>E-Mail: <a href="mailto:steffen.mazanek@unibw.de">steffen.mazanek@unibw.de</a>