<span style="font-family: courier new,monospace;">sert@elite:~/workspace/Haskell-1/bin$ time ./theResult sert</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">1000001</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">real&nbsp;&nbsp;&nbsp; 0m1.384s</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">user&nbsp;&nbsp;&nbsp; 0m1.148s</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.112s</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sert@elite:~/workspace/Haskell-1/bin$ time ./theResult bromage</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">1000001</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">real&nbsp;&nbsp;&nbsp; 0m2.240s</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">user&nbsp;&nbsp;&nbsp; 0m1.972s</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.176s</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sert@elite:~/workspace/Haskell-1/bin$ time ./theResult bromage</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">10000001</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">real&nbsp;&nbsp;&nbsp; 0m59.875s</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">user&nbsp;&nbsp;&nbsp; 0m58.080s</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">sys&nbsp;&nbsp;&nbsp;&nbsp; 0m1.656s</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sert@elite:~/workspace/Haskell-1/bin$ time ./theResult sert</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">10000001</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">real&nbsp;&nbsp;&nbsp; 0m32.043s</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">user&nbsp;&nbsp;&nbsp; 0m30.930s</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.992s</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Hutton seems to fail miserably in both lengths here o_O</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">I was not aware of the effect of structures on performance.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Thanks for reminding me!</span><br>
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Best Regards,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Cetin Sert</span><br style="font-family: courier new,monospace;">
<br><div><span class="gmail_quote">On 21/02/2008, <b class="gmail_sendername">Derek Elkins</b> &lt;<a href="mailto:derek.a.elkins@gmail.com">derek.a.elkins@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Thu, 2008-02-21 at 05:10 +0100, Cetin Sert wrote:<br> &gt; plong 0 = Var 0<br> &gt; plong n | even n&nbsp;&nbsp;&nbsp;&nbsp;= Or&nbsp;&nbsp;(Var n) (plong (n-1))<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | otherwise = And (Var n) (plong (n-1))<br> <br> <br>compare the times again but with plong as follows:<br>
 plong 0 = Var 0<br> plong n | even n = Or (plong (n-1)) (Var n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| otherwise = And (plong (n-1)) (Var n)<br> <br><br> &gt;<br> &gt;<br> &gt; main = do print ((length ∘ vars) (plong 10000000))<br> &gt; real&nbsp;&nbsp;&nbsp;&nbsp;0m3.290s<br>
 &gt; user&nbsp;&nbsp;&nbsp;&nbsp;0m3.152s<br> &gt; sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.020s<br> &gt;<br> &gt; main = do print ((length ∘ vars_) (plong 10000000))<br> &gt; real&nbsp;&nbsp;&nbsp;&nbsp;0m3.732s<br> &gt; user&nbsp;&nbsp;&nbsp;&nbsp;0m3.680s<br> &gt; sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.024s<br> &gt;<br> &gt; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vrsn=varsBromage<br>
 &gt; main = do print ((length ∘ vrsn) (plong 10000000))<br> &gt; real&nbsp;&nbsp;&nbsp;&nbsp;0m4.164s<br> &gt; user&nbsp;&nbsp;&nbsp;&nbsp;0m4.128s<br> &gt; sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.008s<br> &gt;<br> &gt; ghc -fglasgow-exts -O2<br> &gt; ghc 6.8.2<br> &gt;<br> &gt; @Andrew:<br>
 &gt; It is astonishing to see that your version actually performs the worst<br> &gt; (at least on my machine). By looking at your code I had also thought<br> &gt; that yours would be the fastest in terms of runtime performance, it<br>
 &gt; was also exactly what I tried but failed to get to here on my own.<br> &gt; Maybe future ghc versions will change this in favour of your version.<br> &gt;<br> &gt; I would like to have someone test it on another machine though:<br>
 &gt;<br> &gt; fetch: svn co <a href="https://okitsune.svn.sourceforge.net/svnroot/okitsune">https://okitsune.svn.sourceforge.net/svnroot/okitsune</a> .<br> &gt; build: ghc -fglasgow-exts -O2 Common.hs Propositions.hs Test.hs<br>
 &gt; testS: time ./a.out sert<br> &gt; testH: time ./a.out hutton<br> &gt; testB: time ./a.out bromage<br> &gt;<br> &gt;<br> &gt; Best regards,<br> &gt; Cetin Sert.<br> &gt;<br> &gt; On 21/02/2008, <a href="mailto:ajb@spamcop.net">ajb@spamcop.net</a> &lt;<a href="mailto:ajb@spamcop.net">ajb@spamcop.net</a>&gt; wrote:<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G&#39;day all.<br> &gt;<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Quoting Cetin Sert &lt;<a href="mailto:cetin.sert@gmail.com">cetin.sert@gmail.com</a>&gt;:<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; -- proposition<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; data Prp a = Var a<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Not (Prp a)<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Or&nbsp;&nbsp;(Prp a) (Prp a)<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| And (Prp a) (Prp a)<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Imp (Prp a) (Prp a)<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Xor (Prp a) (Prp a)<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Eqv (Prp a) (Prp a)<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Cns Bool<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deriving (Show, Eq)<br> &gt;<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is probably the fastest:<br> &gt;<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vars :: Prp a -&gt; [a]<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vars p = vars&#39; p []<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars&#39; (Var a) = (a:)<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars&#39; (Not p) = vars&#39; p<br> &gt;<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars&#39; (Or l r) = vars&#39; l . vars&#39; r<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{- etc -}<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars&#39; (Cns _) = id<br> &gt;<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cheers,<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Andrew Bromage<br> &gt;<br>
 &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _______________________________________________<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Haskell-Cafe mailing list<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
 &gt;<br> &gt; _______________________________________________<br> &gt; Haskell-Cafe mailing list<br> &gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br> &gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
 <br> </blockquote></div><br>