<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-13122</id>
	<title>Nabble - Haskell</title>
	<updated>2008-07-08T20:07:51Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Haskell-f13122.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Haskell-f13122.html" />
	<subtitle type="html">Haskell is a general purpose, purely functional programming language. Haskell compilers are freely available for almost any computer. Haskell home is &lt;a href=&quot;http://haskell.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-18353684</id>
	<title>Re: [GHC] #2146: Decomposition rule for equalities is too weak in case of higher-kinded type families</title>
	<published>2008-07-08T20:07:51Z</published>
	<updated>2008-07-08T20:07:51Z</updated>
	<author>
		<name>GHC-2</name>
	</author>
	<content type="html">#2146: Decomposition rule for equalities is too weak in case of higher-kinded type
&lt;br&gt;families
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;&amp;nbsp;Reporter: &amp;nbsp;chak &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Owner: &amp;nbsp;chak &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Type: &amp;nbsp;bug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status: &amp;nbsp;new &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Priority: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp;Milestone: &amp;nbsp;6.10 branch
&lt;br&gt;Component: &amp;nbsp;Compiler (Type checker) &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version: &amp;nbsp;6.9 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Severity: &amp;nbsp;minor &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; Resolution: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp;Keywords: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; Difficulty: &amp;nbsp;Unknown &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Testcase: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; Architecture: &amp;nbsp;Multiple &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Os: &amp;nbsp;Multiple &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp;
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;Comment (by chak):
&lt;br&gt;&lt;br&gt;&amp;nbsp;Replying to [comment:3 claus]:
&lt;br&gt;&amp;nbsp;&amp;gt; What exactly is the intended example here?
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;type family F a :: * -&amp;gt; *
&lt;br&gt;&lt;br&gt;&amp;nbsp;foo :: (F Int a ~ F Bool [a]) =&amp;gt; a -&amp;gt; [a]
&lt;br&gt;&amp;nbsp;foo = undefined
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&amp;nbsp;Does not give rise to an error, but should, as it must be equivalent to
&lt;br&gt;&amp;nbsp;the following according to the ''decomposition rule'':
&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;type family F a :: * -&amp;gt; *
&lt;br&gt;&lt;br&gt;&amp;nbsp;foo :: (F Int ~ F Bool, a ~ [a]) =&amp;gt; a -&amp;gt; [a]
&lt;br&gt;&amp;nbsp;foo = undefined
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Ticket URL: &amp;lt;&lt;a href=&quot;http://hackage.haskell.org/trac/ghc/ticket/2146#comment:5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/ghc/ticket/2146#comment:5&lt;/a&gt;&amp;gt;
&lt;br&gt;GHC &amp;lt;&lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;gt;
&lt;br&gt;The Glasgow Haskell Compiler&lt;br /&gt;_______________________________________________
&lt;br&gt;Glasgow-haskell-bugs mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353684&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Glasgow-haskell-bugs@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Glasgow-haskell-bugs-f13127.html&quot; embed=&quot;fixTarget[13127]&quot; target=&quot;_top&quot; &gt;Haskell - Glasgow-haskell-bugs&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-GHC---2146%3A-Decomposition-rule-for-equalities-is-too-weak-in-case-of-higher-kinded-type-families-tp15997521p18353684.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18353285</id>
	<title>Re: [GHC] #2418: desugaring type function application to constraint makes bug disappear</title>
	<published>2008-07-08T19:41:08Z</published>
	<updated>2008-07-08T19:41:08Z</updated>
	<author>
		<name>GHC-2</name>
	</author>
	<content type="html">#2418: desugaring type function application to constraint makes bug disappear
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;&amp;nbsp;Reporter: &amp;nbsp;claus &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Owner: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Type: &amp;nbsp;bug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status: &amp;nbsp;closed &amp;nbsp; 
&lt;br&gt;&amp;nbsp;Priority: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp;Milestone: &amp;nbsp;6.10.1 &amp;nbsp; 
&lt;br&gt;Component: &amp;nbsp;Compiler (Type checker) &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version: &amp;nbsp;6.9 &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Severity: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; Resolution: &amp;nbsp;duplicate
&lt;br&gt;&amp;nbsp;Keywords: &amp;nbsp;type families &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; Difficulty: &amp;nbsp;Unknown &amp;nbsp;
&lt;br&gt;&amp;nbsp;Testcase: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; Architecture: &amp;nbsp;Unknown &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Os: &amp;nbsp;Unknown &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp;
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;Comment (by chak):
&lt;br&gt;&lt;br&gt;&amp;nbsp;Replying to [comment:4 claus]:
&lt;br&gt;&amp;nbsp;&amp;gt; Replying to [comment:3 chak]:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; This is actually a duplicate of #2146 (which more accurately pinpoints
&lt;br&gt;&amp;nbsp;the underlying problem).
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; How so?
&lt;br&gt;&lt;br&gt;&amp;nbsp;`T` is a unary type synonym family, so in
&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;wrapper :: forall a f . (Blah f a) =&amp;gt; a -&amp;gt; T f f a
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&amp;nbsp;you should read the result type as `(T f) f a`, where `T f` is the
&lt;br&gt;&amp;nbsp;''family application,'' whereas the application of `(T f)` to the second
&lt;br&gt;&amp;nbsp;`f` and to `a` are vanilla type applications. &amp;nbsp;The bug is that GHC
&lt;br&gt;&amp;nbsp;mistakenly takes the whole of `T f f a` as tertiary family application.
&lt;br&gt;&amp;nbsp;(If it ''were'' a tertiary family application, the signature would be
&lt;br&gt;&amp;nbsp;ambiguous and the error message would be correct - but it's unary, so GHC
&lt;br&gt;&amp;nbsp;is wrong in rejecting the program.)
&lt;br&gt;&lt;br&gt;&amp;nbsp;This also explains why what you call the desugared variant works:
&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;wrapper :: forall a f tf . (Blah f a,T f~tf) =&amp;gt; a -&amp;gt; tf f a
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&amp;nbsp;Here `tf f a` syntactically contains no type family. &amp;nbsp;So, GHC correctly
&lt;br&gt;&amp;nbsp;takes this to be vanilla type applications.
&lt;br&gt;&lt;br&gt;&amp;nbsp;The place in the type checker where things go wrong is in the
&lt;br&gt;&amp;nbsp;implementation of what we call the ''decomposition rule'' (see our
&lt;br&gt;&amp;nbsp;forthcoming ICFP'08 paper for details on the type checking algorithm).
&lt;br&gt;&amp;nbsp;That's exactly what #2146 is about. &amp;nbsp;(In any case, I will also add the
&lt;br&gt;&amp;nbsp;example of the present ticket to the testsuite when I fix the bug.)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Ticket URL: &amp;lt;&lt;a href=&quot;http://hackage.haskell.org/trac/ghc/ticket/2418#comment:5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/ghc/ticket/2418#comment:5&lt;/a&gt;&amp;gt;
&lt;br&gt;GHC &amp;lt;&lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;gt;
&lt;br&gt;The Glasgow Haskell Compiler&lt;br /&gt;_______________________________________________
&lt;br&gt;Glasgow-haskell-bugs mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353285&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Glasgow-haskell-bugs@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Glasgow-haskell-bugs-f13127.html&quot; embed=&quot;fixTarget[13127]&quot; target=&quot;_top&quot; &gt;Haskell - Glasgow-haskell-bugs&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-GHC---2418%3A-desugaring-type-function-application-to-constraint-makes-bug-disappear-tp18278006p18353285.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18353179</id>
	<title>Re: FPGA / Lava and haskell</title>
	<published>2008-07-08T19:26:44Z</published>
	<updated>2008-07-08T19:26:44Z</updated>
	<author>
		<name>Alfonso Acosta</name>
	</author>
	<content type="html">We'll soon (before september, hopefully) relase a deep-embedded
&lt;br&gt;version of ForSyDe[1] which, among other things, has a VHDL backend
&lt;br&gt;(with specific support for Altera's Modelsim and Quartus).
&lt;br&gt;&lt;br&gt;ForSyDe's new implementation is internally based upon the same concept
&lt;br&gt;as Lava (Observable Sharing). However, it has quite a few differences:
&lt;br&gt;&lt;br&gt;* ForSyDe is behavioural (computations are expressed in plain haskell)
&lt;br&gt;* It has support for components
&lt;br&gt;* Is not barely targeted at synchrounous hardware systems (although
&lt;br&gt;the VHDL backend is obviously aimed at them). It has suport for other
&lt;br&gt;MoCs (Models of Computation).
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://www.imit.kth.se/info/FOFU/ForSyDe/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.imit.kth.se/info/FOFU/ForSyDe/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Tue, Jul 8, 2008 at 7:43 PM, Marc Weber &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353179&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;marco-oweber@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Is Haskell still used (in industry as well ?) to write (V)HDL code to
&lt;br&gt;&amp;gt; program FPGAs and create circuits on chips?
&lt;br&gt;&amp;gt; The Chalmers Lava homepage tells abouta Xilinx version which should be
&lt;br&gt;&amp;gt; merged in soon. But on the xilinx homepage there was no reference to
&lt;br&gt;&amp;gt; neither Lava nor haskell..
&lt;br&gt;&amp;gt; I'm thinking about designing a similar tool to www.combimouse.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sincerly
&lt;br&gt;&amp;gt; Marc
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Haskell-Cafe mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353179&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353179&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/FPGA---Lava-and-haskell-tp18352226p18353179.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18353018</id>
	<title>Re: FPGA / Lava and haskell</title>
	<published>2008-07-08T19:05:42Z</published>
	<updated>2008-07-08T19:05:42Z</updated>
	<author>
		<name>pweaver</name>
	</author>
	<content type="html">&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Jul 8, 2008 at 5:43 PM, Marc Weber &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353018&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;marco-oweber@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Is Haskell still used (in industry as well ?) to write (V)HDL code to&lt;br&gt;
program FPGAs and create circuits on chips?&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;Indeed!&amp;nbsp; Galois maintains a language called Cryptol.&amp;nbsp; Almost all tools for this language, including an FPGA compiler that produces HDL, are written in Haskell.&amp;nbsp; It is not open source, nor is it free as in beer, but there is a free academic version without FPGA support.&lt;br&gt;
&lt;br&gt;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
The Chalmers Lava homepage tells abouta Xilinx version which should be&lt;br&gt;
merged in soon. But on the xilinx homepage there was no reference to&lt;br&gt;
neither Lava nor haskell..&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;As for Lava and the Xilinx version, I am not really sure how actively it is being developed.&amp;nbsp; Perhaps someone else here knows?&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
I&amp;#39;m thinking about designing a similar tool to &lt;a href=&quot;http://www.combimouse.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.combimouse.com&lt;/a&gt;.&amp;nbsp;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;You&amp;#39;re going to design something like that with an FPGA in it?&amp;nbsp; :)&lt;br&gt;
&lt;br&gt;For a simple enough design, it can be useful to write specs in Haskell and then translate them to HDL by hand.&amp;nbsp; I believe someone on this list had a particularly successful experience doing that :).&lt;br&gt;&lt;br&gt;- Philip&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Sincerly&lt;br&gt;
Marc&lt;br&gt;
_______________________________________________&lt;br&gt;
Haskell-Cafe mailing list&lt;br&gt;
&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353018&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18353018&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/FPGA---Lava-and-haskell-tp18352226p18353018.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18352597</id>
	<title>Re: Qualified import syntax badly designed (?)</title>
	<published>2008-07-08T18:19:03Z</published>
	<updated>2008-07-08T18:19:03Z</updated>
	<author>
		<name>skynare</name>
	</author>
	<content type="html">How about using + and - prefixes instead of implicit and explicit clause?
&lt;br&gt;&lt;br&gt;\begin{code}
&lt;br&gt;module T where
&lt;br&gt;&lt;br&gt;import Data.Map (Map, (\\))
&lt;br&gt;import qualified Data.Map as M hiding (lookup)
&lt;br&gt;&lt;br&gt;f :: (Ord k) =&amp;gt; Map k v -&amp;gt; k -&amp;gt; Map k v
&lt;br&gt;f m k = m \\ M.singleton k (m M.! k)
&lt;br&gt;\end{code}
&lt;br&gt;&lt;br&gt;the following import command would mean the same:
&lt;br&gt;import qualified Data.Map as M (+Map, &amp;nbsp;-lookup, +singleton, +(\\))
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 7/8/08, Neil Mitchell &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18352597&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ndmitchell@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It seems that the qualified import syntax is a bit awkward. At the
&lt;br&gt;&amp;gt; moment, its common to see:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import qualified Data.Map as M
&lt;br&gt;&amp;gt; import Data.Map(Map)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i.e. import a module, give it an alias (M), and put some things in the
&lt;br&gt;&amp;gt; current namespace (Map).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Another way some people sometimes do it is:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import qualified Data.Map as M
&lt;br&gt;&amp;gt; import Data.Map hiding (lookup)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i.e. import a module, give it an alias (M), and exclude some things
&lt;br&gt;&amp;gt; from the current namespace.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Both of these require two imports, yet feel like they should require
&lt;br&gt;&amp;gt; only one. It seems as though the import syntax more naturally promotes
&lt;br&gt;&amp;gt; security (preventing access to some functions), rather than
&lt;br&gt;&amp;gt; namespacing.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think a better design for namespacing might be:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import Data.Map as M implicit (Map)
&lt;br&gt;&amp;gt; import Data.Map as M explicit (lookup)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If this was the design, I'm not sure either qualified or hiding would
&lt;br&gt;&amp;gt; be necessary for namespacing. You'd get module names aligning up in
&lt;br&gt;&amp;gt; the same column after the import rather than being broken up with
&lt;br&gt;&amp;gt; qualified. You'd only need one import of a module for most purposes.
&lt;br&gt;&amp;gt; The hiding keyword might still be nice for lambdabot style
&lt;br&gt;&amp;gt; applications, but that is probably a secondary concern, and better
&lt;br&gt;&amp;gt; handled in other ways.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thoughts? Is this design flawed in some way? Does the existing design
&lt;br&gt;&amp;gt; have some compelling benefit I've overlooked?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Neil
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Haskell-Cafe mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18352597&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18352597&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Qualified-import-syntax-badly-designed-%28-%29-tp18351760p18352597.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18352226</id>
	<title>FPGA / Lava and haskell</title>
	<published>2008-07-08T17:43:38Z</published>
	<updated>2008-07-08T17:43:38Z</updated>
	<author>
		<name>Marc Weber</name>
	</author>
	<content type="html">Is Haskell still used (in industry as well ?) to write (V)HDL code to
&lt;br&gt;program FPGAs and create circuits on chips?
&lt;br&gt;The Chalmers Lava homepage tells abouta Xilinx version which should be
&lt;br&gt;merged in soon. But on the xilinx homepage there was no reference to
&lt;br&gt;neither Lava nor haskell..
&lt;br&gt;I'm thinking about designing a similar tool to www.combimouse.com.
&lt;br&gt;&lt;br&gt;Sincerly
&lt;br&gt;Marc
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18352226&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/FPGA---Lava-and-haskell-tp18352226p18352226.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18351851</id>
	<title>[GHC] #2429: error building full dll name to be loaded in ghci</title>
	<published>2008-07-08T17:11:33Z</published>
	<updated>2008-07-08T17:11:33Z</updated>
	<author>
		<name>GHC-2</name>
	</author>
	<content type="html">#2429: error building full dll name to be loaded in ghci
&lt;br&gt;------------------------+---------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; Reporter: &amp;nbsp;jvl &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; Owner: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Type: &amp;nbsp;bug &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp;Status: &amp;nbsp;new &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; Priority: &amp;nbsp;normal &amp;nbsp; | &amp;nbsp; Component: &amp;nbsp;Driver 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Version: &amp;nbsp;6.8.2 &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;Severity: &amp;nbsp;normal 
&lt;br&gt;&amp;nbsp; &amp;nbsp; Keywords: &amp;nbsp;dll &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;Testcase: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;Architecture: &amp;nbsp;Unknown &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Os: &amp;nbsp;Windows
&lt;br&gt;------------------------+---------------------------------------------------
&lt;br&gt;&amp;nbsp;problem encountered ghc 6.8.2 on windows XP.
&lt;br&gt;&lt;br&gt;&amp;nbsp;This problem was identified whilst trying to load the wxHaskell dll into
&lt;br&gt;&amp;nbsp;ghci.
&lt;br&gt;&amp;nbsp;The wxHaskell dll is named wxc-msw2.6.4-0.10.3.dll and will not load into
&lt;br&gt;&amp;nbsp;ghci,
&lt;br&gt;&amp;nbsp;the following error is encountered
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc-msw2.6.4-0.10.3
&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc-msw2.6.4-0.10.3 ... failed.
&lt;br&gt;&amp;nbsp;Dynamic linker error message was:
&lt;br&gt;&amp;nbsp; &amp;nbsp; addDLL: unknown error
&lt;br&gt;&amp;nbsp;Whilst trying to load: &amp;nbsp;(dynamic) wxc-msw2.6.4-0.10.3
&lt;br&gt;&amp;nbsp;Directories to search are:
&lt;br&gt;&amp;nbsp;: user specified .o/.so/.DLL could not be loaded.
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;yet if we rename the dll
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc-msw2.6.4-0.10
&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc-msw2.6.4-0.10 ... done
&lt;br&gt;&amp;nbsp;final link ... done
&lt;br&gt;&amp;nbsp;Prelude&amp;gt;
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;i.e. the final .3.dll causes the problem, exceeding some limit? There
&lt;br&gt;&amp;nbsp;appears to be an error in the parsing and construction of the full dll
&lt;br&gt;&amp;nbsp;name.
&lt;br&gt;&amp;nbsp;i.e. ghci postfix's a .dll adds the path etc, to the base name, but in the
&lt;br&gt;&amp;nbsp;above, it can't handle the extra &amp;quot;.3&amp;quot; in the name.
&lt;br&gt;&lt;br&gt;&amp;nbsp;ghc in compile mode does not have this error.
&lt;br&gt;&lt;br&gt;&amp;nbsp;The above can be verified by constructibe a dummy dll using the following
&lt;br&gt;&amp;nbsp;c file,
&lt;br&gt;&amp;nbsp;then renaming it appropriately, file wxc.cpp:
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&lt;br&gt;&amp;nbsp;#define ROBEXP __declspec(dllexport)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;void ROBEXP foo_addref(int* f){ }
&lt;br&gt;&amp;nbsp;void ROBEXP foo_release(int* f){ }
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;as follows
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;cl /LD /MD wxc.cpp
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc
&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc ... done
&lt;br&gt;&amp;nbsp;final link ... done
&lt;br&gt;&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;rename and test
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;rename wxc.dll wxc-msw2.6.4-0.10.3.dll
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc-msw2.6.4-0.10.3
&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc-msw2.6.4-0.10.3 ... failed.
&lt;br&gt;&amp;nbsp;Dynamic linker error message was:
&lt;br&gt;&amp;nbsp; &amp;nbsp; addDLL: unknown error
&lt;br&gt;&amp;nbsp;Whilst trying to load: &amp;nbsp;(dynamic) wxc-msw2.6.4-0.10.3
&lt;br&gt;&amp;nbsp;Directories to search are:
&lt;br&gt;&amp;nbsp;: user specified .o/.so/.DLL could not be loaded.
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;again the same load error
&lt;br&gt;&lt;br&gt;&amp;nbsp;A number of other points ...
&lt;br&gt;&lt;br&gt;&amp;nbsp; * dll load error messages
&lt;br&gt;&amp;nbsp; * dll load name stuffing
&lt;br&gt;&lt;br&gt;&amp;nbsp;== error messages ==
&lt;br&gt;&amp;nbsp;The same error message &amp;quot;addDLL: unknown error&amp;quot; will apear regardless of
&lt;br&gt;&amp;nbsp;whether the error
&lt;br&gt;&amp;nbsp;is a genuine &amp;quot;unknown&amp;quot; error or not. The load error reporting should at
&lt;br&gt;&amp;nbsp;least distinguish
&lt;br&gt;&amp;nbsp;between not being able to locate the dll and other errors, for example,
&lt;br&gt;&amp;nbsp;lets give the load
&lt;br&gt;&amp;nbsp;a spurious name
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc-msw2.6.4-X
&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc-msw2.6.4-X ... failed.
&lt;br&gt;&amp;nbsp;Dynamic linker error message was:
&lt;br&gt;&amp;nbsp; &amp;nbsp; addDLL: unknown error
&lt;br&gt;&amp;nbsp;Whilst trying to load: &amp;nbsp;(dynamic) wxc-msw2.6.4-X
&lt;br&gt;&amp;nbsp;Directories to search are:
&lt;br&gt;&amp;nbsp;: user specified .o/.so/.DLL could not be loaded.
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;OK, now lets create a bad dll
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;cp wxc.cpp wxc-msw2.6.4-X.dll
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;&amp;gt;ghci -fglasgow-exts -lwxc-msw2.6.4-X
&lt;br&gt;&lt;br&gt;&amp;nbsp;GHCi, version 6.8.2: &lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;nbsp; :? for help
&lt;br&gt;&amp;nbsp;Loading package base ... linking ... done.
&lt;br&gt;&amp;nbsp;Loading object (dynamic) wxc-msw2.6.4-X ... failed.
&lt;br&gt;&amp;nbsp;Dynamic linker error message was:
&lt;br&gt;&amp;nbsp; &amp;nbsp; addDLL: unknown error
&lt;br&gt;&amp;nbsp;Whilst trying to load: &amp;nbsp;(dynamic) wxc-msw2.6.4-X
&lt;br&gt;&amp;nbsp;Directories to search are:
&lt;br&gt;&amp;nbsp;: user specified .o/.so/.DLL could not be loaded.
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;so we can't even distinguish between a missing dll and a bad one !
&lt;br&gt;&lt;br&gt;&amp;nbsp;== name stuffing ==
&lt;br&gt;&lt;br&gt;&amp;nbsp;Also, if possible wouldn't it be better for ghci to display the same
&lt;br&gt;&amp;nbsp;behaviour as gcc in treatment of dll names i.e. it will postfix .dll, but
&lt;br&gt;&amp;nbsp;if that fails it will try the supplied name without any extension, so
&lt;br&gt;&amp;nbsp;something
&lt;br&gt;&amp;nbsp;like the following will work.
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;ghci -lsomelib.dll
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;a somewhat related issue #1883 can be treated in the same way, i.e.
&lt;br&gt;&amp;nbsp;generate a
&lt;br&gt;&amp;nbsp;set of possible target dll full names, by prefixing, postfixing, or in
&lt;br&gt;&amp;nbsp;pseudo
&lt;br&gt;&amp;nbsp;haskell in the list monad
&lt;br&gt;&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;names base = do
&lt;br&gt;&amp;nbsp; &amp;nbsp;prefix &amp;lt;- all_possible_prefix_including_null
&lt;br&gt;&amp;nbsp; &amp;nbsp;postfix &amp;lt;- all_possible_postfix_including_null
&lt;br&gt;&amp;nbsp; &amp;nbsp;return (prefix++base++postfix)
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&lt;br&gt;&amp;nbsp;then test each one for load, (gcc does something very similar when
&lt;br&gt;&amp;nbsp;searching for .a libraries)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Ticket URL: &amp;lt;&lt;a href=&quot;http://hackage.haskell.org/trac/ghc/ticket/2429&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/ghc/ticket/2429&lt;/a&gt;&amp;gt;
&lt;br&gt;GHC &amp;lt;&lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;gt;
&lt;br&gt;The Glasgow Haskell Compiler&lt;br /&gt;_______________________________________________
&lt;br&gt;Glasgow-haskell-bugs mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18351851&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Glasgow-haskell-bugs@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Glasgow-haskell-bugs-f13127.html&quot; embed=&quot;fixTarget[13127]&quot; target=&quot;_top&quot; &gt;Haskell - Glasgow-haskell-bugs&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-GHC---2429%3A-error-building-full-dll-name-to-be-loaded-in-ghci-tp18351851p18351851.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18351760</id>
	<title>Qualified import syntax badly designed (?)</title>
	<published>2008-07-08T17:01:46Z</published>
	<updated>2008-07-08T17:01:46Z</updated>
	<author>
		<name>Neil Mitchell</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;It seems that the qualified import syntax is a bit awkward. At the
&lt;br&gt;moment, its common to see:
&lt;br&gt;&lt;br&gt;import qualified Data.Map as M
&lt;br&gt;import Data.Map(Map)
&lt;br&gt;&lt;br&gt;i.e. import a module, give it an alias (M), and put some things in the
&lt;br&gt;current namespace (Map).
&lt;br&gt;&lt;br&gt;Another way some people sometimes do it is:
&lt;br&gt;&lt;br&gt;import qualified Data.Map as M
&lt;br&gt;import Data.Map hiding (lookup)
&lt;br&gt;&lt;br&gt;i.e. import a module, give it an alias (M), and exclude some things
&lt;br&gt;from the current namespace.
&lt;br&gt;&lt;br&gt;Both of these require two imports, yet feel like they should require
&lt;br&gt;only one. It seems as though the import syntax more naturally promotes
&lt;br&gt;security (preventing access to some functions), rather than
&lt;br&gt;namespacing.
&lt;br&gt;&lt;br&gt;I think a better design for namespacing might be:
&lt;br&gt;&lt;br&gt;import Data.Map as M implicit (Map)
&lt;br&gt;import Data.Map as M explicit (lookup)
&lt;br&gt;&lt;br&gt;If this was the design, I'm not sure either qualified or hiding would
&lt;br&gt;be necessary for namespacing. You'd get module names aligning up in
&lt;br&gt;the same column after the import rather than being broken up with
&lt;br&gt;qualified. You'd only need one import of a module for most purposes.
&lt;br&gt;The hiding keyword might still be nice for lambdabot style
&lt;br&gt;applications, but that is probably a secondary concern, and better
&lt;br&gt;handled in other ways.
&lt;br&gt;&lt;br&gt;Thoughts? Is this design flawed in some way? Does the existing design
&lt;br&gt;have some compelling benefit I've overlooked?
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;&lt;br&gt;Neil
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18351760&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Qualified-import-syntax-badly-designed-%28-%29-tp18351760p18351760.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18351262</id>
	<title>Re: Re: Interesting feature</title>
	<published>2008-07-08T16:22:20Z</published>
	<updated>2008-07-08T16:22:20Z</updated>
	<author>
		<name>David Overton-2</name>
	</author>
	<content type="html">On 08/07/2008, Benjamin L. Russell &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18351262&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;DekuDekuplex@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;nbsp;Do you know of any logic programming languages with strong typing and
&lt;br&gt;&amp;gt; &amp;nbsp;modules that have GUI-based REPL's, similar to WinHugs, available?
&lt;br&gt;&lt;br&gt;You might want to look at Visual Prolog (&lt;a href=&quot;http://www.visual-prolog.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.visual-prolog.com/&lt;/a&gt;). &amp;nbsp;It
&lt;br&gt;is strongly typed and has a Windows IDE. &amp;nbsp;I'm not sure if it has a REPL though.
&lt;br&gt;&lt;br&gt;David
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18351262&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Interesting-feature-tp18311432p18351262.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18351204</id>
	<title>Re: Proposal: Extensible exceptions</title>
	<published>2008-07-08T16:19:11Z</published>
	<updated>2008-07-08T16:19:11Z</updated>
	<author>
		<name>Ian Lynagh</name>
	</author>
	<content type="html">On Mon, Jul 07, 2008 at 02:34:56PM -0700, Iavor Diatchki wrote:
&lt;br&gt;&amp;gt; Could you upload a package to hackage with the implementation of the
&lt;br&gt;&amp;gt; new exception library, with module names that are separate from the
&lt;br&gt;&amp;gt; current version?
&lt;br&gt;&lt;br&gt;I've attached a module which hopefully exposes the same interface as the
&lt;br&gt;proposed new Exception module, except it doesn't include all the new
&lt;br&gt;types. It should be sufficient to see how much change is necessary,
&lt;br&gt;though.
&lt;br&gt;&lt;br&gt;If you want to fill it out with types or put it on hackage then I have
&lt;br&gt;no objections, although personally I think it would make more sense to
&lt;br&gt;wait until the interface and hierarchy has settled down first.
&lt;br&gt;&lt;br&gt;&amp;gt; Otherwise, the trac description seems OK, although if most of the time
&lt;br&gt;&amp;gt; &amp;quot;catch&amp;quot; needs to be replaced by &amp;quot;catchAny&amp;quot;,
&lt;br&gt;&lt;br&gt;I think you've misunderstood something I said: Most of the problems are
&lt;br&gt;solved by replacing catch with catchAny, but I don't know if most of the
&lt;br&gt;uses of catch cause problems.
&lt;br&gt;&lt;br&gt;I wouldn't be that surprised if you're right, though, and most uses of
&lt;br&gt;catch are of the form
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; ... `catch` \e -&amp;gt; cleanup &amp;gt;&amp;gt; throw e
&lt;br&gt;&lt;br&gt;but if that's the case then I think we'd be better off replacing them
&lt;br&gt;with the onException that Simon proposed.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;Ian
&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;&lt;br&gt;{-# LANGUAGE ExistentialQuantification, Rank2Types, UnboxedTuples,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DeriveDataTypeable, MagicHash #-}
&lt;br&gt;&lt;br&gt;module NewException (
&lt;br&gt;&amp;nbsp; &amp;nbsp; Exception(..), SomeException(..),
&lt;br&gt;&amp;nbsp; &amp;nbsp; throwIO, throw, ioError, throwTo,
&lt;br&gt;&amp;nbsp; &amp;nbsp; catch, catches, Handler(..), catchAny, catchJust,
&lt;br&gt;&amp;nbsp; &amp;nbsp; handle, handleAny, handleJust,
&lt;br&gt;&amp;nbsp; &amp;nbsp; try, tryJust, ignoreExceptions,
&lt;br&gt;&amp;nbsp; &amp;nbsp; evaluate, mapException, block, unblock, assert,
&lt;br&gt;&amp;nbsp; &amp;nbsp; bracket, bracket_, bracketOnError, finally,
&lt;br&gt;&amp;nbsp; &amp;nbsp; ) where
&lt;br&gt;&lt;br&gt;import Data.Typeable (Typeable, cast)
&lt;br&gt;import GHC.Base (raise#, catch#, raiseIO#,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;blockAsyncExceptions#, unblockAsyncExceptions#)
&lt;br&gt;import GHC.IOBase (IO(IO), unIO, IOException)
&lt;br&gt;import GHC.Conc (ThreadId)
&lt;br&gt;import Prelude (Show(show), ($), Maybe(..), undefined, foldr, IOError,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flip, seq, Either(..), Monad(..), const, Bool)
&lt;br&gt;import System.IO.Unsafe (unsafePerformIO)
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------
&lt;br&gt;-- The Extensible Exceptions library
&lt;br&gt;&lt;br&gt;data SomeException = forall e . Exception e =&amp;gt; SomeException e
&lt;br&gt;&amp;nbsp; &amp;nbsp; deriving Typeable
&lt;br&gt;&lt;br&gt;instance Show SomeException where
&lt;br&gt;&amp;nbsp; &amp;nbsp; show (SomeException e) = show e
&lt;br&gt;&lt;br&gt;class (Typeable e, Show e) =&amp;gt; Exception e where
&lt;br&gt;&amp;nbsp; &amp;nbsp; toException &amp;nbsp; :: e -&amp;gt; SomeException
&lt;br&gt;&amp;nbsp; &amp;nbsp; fromException :: SomeException -&amp;gt; Maybe e
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; toException = SomeException
&lt;br&gt;&amp;nbsp; &amp;nbsp; fromException (SomeException e) = cast e
&lt;br&gt;&lt;br&gt;instance Exception SomeException where
&lt;br&gt;&amp;nbsp; &amp;nbsp; toException se = se
&lt;br&gt;&amp;nbsp; &amp;nbsp; fromException = Just
&lt;br&gt;&lt;br&gt;instance Exception IOException
&lt;br&gt;&lt;br&gt;throw :: Exception e =&amp;gt; e -&amp;gt; a
&lt;br&gt;throw e = raise# (toException e)
&lt;br&gt;&lt;br&gt;catch :: Exception e =&amp;gt; IO a -&amp;gt; (e -&amp;gt; IO a) -&amp;gt; IO a
&lt;br&gt;catch (IO io) handler = IO $ catch# io handler'
&lt;br&gt;&amp;nbsp; &amp;nbsp; where handler' e = case fromException e of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Just e' -&amp;gt; unIO (handler e')
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Nothing -&amp;gt; raise# e
&lt;br&gt;&lt;br&gt;catchAny :: IO a -&amp;gt; (forall e . Exception e =&amp;gt; e -&amp;gt; IO a) -&amp;gt; IO a
&lt;br&gt;catchAny (IO io) handler = IO $ catch# io handler'
&lt;br&gt;&amp;nbsp; &amp;nbsp; where handler' (SomeException e) = unIO (handler e)
&lt;br&gt;&lt;br&gt;throwIO :: Exception e =&amp;gt; e -&amp;gt; IO a
&lt;br&gt;throwIO e = IO (raiseIO# (toException e))
&lt;br&gt;&lt;br&gt;ioError &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :: IOError -&amp;gt; IO a
&lt;br&gt;ioError &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;nbsp;throwIO
&lt;br&gt;&lt;br&gt;throwTo :: Exception e =&amp;gt; ThreadId -&amp;gt; e -&amp;gt; IO ()
&lt;br&gt;throwTo = undefined
&lt;br&gt;&lt;br&gt;catches :: IO a -&amp;gt; [Handler a] -&amp;gt; IO a
&lt;br&gt;catches io handlers = io `catch` catchesHandler handlers
&lt;br&gt;&lt;br&gt;catchesHandler :: [Handler a] -&amp;gt; SomeException -&amp;gt; IO a
&lt;br&gt;catchesHandler handlers e = foldr tryHandler (throw e) handlers
&lt;br&gt;&amp;nbsp; &amp;nbsp; where tryHandler (Handler handler) res
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = case fromException e of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Just e' -&amp;gt; handler e'
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Nothing -&amp;gt; res
&lt;br&gt;&lt;br&gt;data Handler a = forall e . Exception e =&amp;gt; Handler (e -&amp;gt; IO a)
&lt;br&gt;&lt;br&gt;catchJust
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :: Exception e
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; (e -&amp;gt; Maybe b) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ Predicate to select exceptions
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ Computation to run
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; (b -&amp;gt; IO a) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-- ^ Handler
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO a
&lt;br&gt;catchJust p a handler = catch a handler'
&lt;br&gt;&amp;nbsp; where handler' e = case p e of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Nothing -&amp;gt; throw e
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Just b &amp;nbsp;-&amp;gt; handler b
&lt;br&gt;&lt;br&gt;handle &amp;nbsp; &amp;nbsp; :: Exception e =&amp;gt; (e -&amp;gt; IO a) -&amp;gt; IO a -&amp;gt; IO a
&lt;br&gt;handle &amp;nbsp; &amp;nbsp; = &amp;nbsp;flip catch
&lt;br&gt;&lt;br&gt;handleAny &amp;nbsp;:: (forall e . Exception e =&amp;gt; e -&amp;gt; IO a) -&amp;gt; IO a -&amp;gt; IO a
&lt;br&gt;handleAny &amp;nbsp;= &amp;nbsp;flip catchAny
&lt;br&gt;&lt;br&gt;handleJust :: Exception e =&amp;gt; (e -&amp;gt; Maybe b) -&amp;gt; (b -&amp;gt; IO a) -&amp;gt; IO a -&amp;gt; IO a
&lt;br&gt;handleJust p = &amp;nbsp;flip (catchJust p)
&lt;br&gt;&lt;br&gt;mapException :: Exception e =&amp;gt; (e -&amp;gt; e) -&amp;gt; a -&amp;gt; a
&lt;br&gt;mapException f v = unsafePerformIO (catch (evaluate v)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (\x -&amp;gt; throw (f x)))
&lt;br&gt;&lt;br&gt;evaluate :: a -&amp;gt; IO a
&lt;br&gt;evaluate a = IO $ \s -&amp;gt; case a `seq` () of () -&amp;gt; (# s, a #)
&lt;br&gt;&lt;br&gt;try :: Exception e =&amp;gt; IO a -&amp;gt; IO (Either e a)
&lt;br&gt;try a = catch (a &amp;gt;&amp;gt;= \ v -&amp;gt; return (Right v)) (\e -&amp;gt; return (Left e))
&lt;br&gt;&lt;br&gt;tryJust :: Exception e =&amp;gt; (e -&amp;gt; Maybe b) -&amp;gt; IO a -&amp;gt; IO (Either b a)
&lt;br&gt;tryJust p a = do
&lt;br&gt;&amp;nbsp; r &amp;lt;- try a
&lt;br&gt;&amp;nbsp; case r of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Right v -&amp;gt; return (Right v)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Left &amp;nbsp;e -&amp;gt; case p e of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Nothing -&amp;gt; throw e
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Just b &amp;nbsp;-&amp;gt; return (Left b)
&lt;br&gt;&lt;br&gt;ignoreExceptions :: IO () -&amp;gt; IO ()
&lt;br&gt;ignoreExceptions io = io `catchAny` \_ -&amp;gt; return ()
&lt;br&gt;&lt;br&gt;bracket 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :: IO a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ computation to run first (\&amp;quot;acquire resource\&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; (a -&amp;gt; IO b) &amp;nbsp;-- ^ computation to run last (\&amp;quot;release resource\&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; (a -&amp;gt; IO c) &amp;nbsp;-- ^ computation to run in-between
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- returns the value from the in-between computation
&lt;br&gt;bracket before after thing =
&lt;br&gt;&amp;nbsp; block (do
&lt;br&gt;&amp;nbsp; &amp;nbsp; a &amp;lt;- before 
&lt;br&gt;&amp;nbsp; &amp;nbsp; r &amp;lt;- catchAny
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(unblock (thing a))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(\e -&amp;gt; do { after a; throw e })
&lt;br&gt;&amp;nbsp; &amp;nbsp; after a
&lt;br&gt;&amp;nbsp; &amp;nbsp; return r
&lt;br&gt;&amp;nbsp;)
&lt;br&gt;&lt;br&gt;finally :: IO a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ computation to run first
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO b &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ computation to run afterward (even if an exception 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- was raised)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- returns the value from the first computation
&lt;br&gt;a `finally` sequel =
&lt;br&gt;&amp;nbsp; block (do
&lt;br&gt;&amp;nbsp; &amp;nbsp; r &amp;lt;- catchAny
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(unblock a)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(\e -&amp;gt; do { sequel; throw e })
&lt;br&gt;&amp;nbsp; &amp;nbsp; sequel
&lt;br&gt;&amp;nbsp; &amp;nbsp; return r
&lt;br&gt;&amp;nbsp; )
&lt;br&gt;&lt;br&gt;bracket_ :: IO a -&amp;gt; IO b -&amp;gt; IO c -&amp;gt; IO c
&lt;br&gt;bracket_ before after thing = bracket before (const after) (const thing)
&lt;br&gt;&lt;br&gt;bracketOnError
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :: IO a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- ^ computation to run first (\&amp;quot;acquire resource\&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; (a -&amp;gt; IO b) &amp;nbsp;-- ^ computation to run last (\&amp;quot;release resource\&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; (a -&amp;gt; IO c) &amp;nbsp;-- ^ computation to run in-between
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;gt; IO c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- returns the value from the in-between computation
&lt;br&gt;bracketOnError before after thing =
&lt;br&gt;&amp;nbsp; block (do
&lt;br&gt;&amp;nbsp; &amp;nbsp; a &amp;lt;- before
&lt;br&gt;&amp;nbsp; &amp;nbsp; catchAny
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (unblock (thing a))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (\e -&amp;gt; do { after a; throw e })
&lt;br&gt;&amp;nbsp;)
&lt;br&gt;&lt;br&gt;block :: IO a -&amp;gt; IO a
&lt;br&gt;block (IO io) = IO $ blockAsyncExceptions# io
&lt;br&gt;&lt;br&gt;unblock :: IO a -&amp;gt; IO a
&lt;br&gt;unblock (IO io) = IO $ unblockAsyncExceptions# io
&lt;br&gt;&lt;br&gt;assert :: Bool -&amp;gt; a -&amp;gt; a
&lt;br&gt;assert _ r = r
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18351204&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18351204.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18350890</id>
	<title>Re: [GHC] #2146: Decomposition rule for equalities is too weak in case of higher-kinded type families</title>
	<published>2008-07-08T15:57:40Z</published>
	<updated>2008-07-08T15:57:40Z</updated>
	<author>
		<name>GHC-2</name>
	</author>
	<content type="html">#2146: Decomposition rule for equalities is too weak in case of higher-kinded type
&lt;br&gt;families
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;&amp;nbsp;Reporter: &amp;nbsp;chak &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Owner: &amp;nbsp;chak &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Type: &amp;nbsp;bug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status: &amp;nbsp;new &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Priority: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp;Milestone: &amp;nbsp;6.10 branch
&lt;br&gt;Component: &amp;nbsp;Compiler (Type checker) &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version: &amp;nbsp;6.9 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Severity: &amp;nbsp;minor &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; Resolution: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp;Keywords: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; Difficulty: &amp;nbsp;Unknown &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Testcase: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; Architecture: &amp;nbsp;Multiple &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Os: &amp;nbsp;Multiple &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp;
&lt;br&gt;-------------------------------------+--------------------------------------
&lt;br&gt;Comment (by claus):
&lt;br&gt;&lt;br&gt;&amp;nbsp;I just noticed that `GHCi, version 6.9.20080514` accepts partially applied
&lt;br&gt;&amp;nbsp;type families, which would permit `foo2`'s type equality to succeed:
&lt;br&gt;&amp;nbsp;{{{
&lt;br&gt;&amp;nbsp;{-# LANGUAGE TypeFamilies #-}
&lt;br&gt;&amp;nbsp;type family F a :: * -&amp;gt; *
&lt;br&gt;&amp;nbsp;type instance F Int &amp;nbsp;= []
&lt;br&gt;&amp;nbsp;type instance F Bool = Id
&lt;br&gt;&amp;nbsp;type family Id a :: *
&lt;br&gt;&amp;nbsp;type instance Id a = a
&lt;br&gt;&lt;br&gt;&amp;nbsp;foo2 :: (F Int a ~ F Bool [a]) =&amp;gt; a -&amp;gt; [a]
&lt;br&gt;&amp;nbsp;foo2 = undefined
&lt;br&gt;&amp;nbsp;}}}
&lt;br&gt;&amp;nbsp;(note the partially applied `Id`)
&lt;br&gt;&lt;br&gt;&amp;nbsp;I thought this was covered in #2157, but both that ticket and its summary
&lt;br&gt;&amp;nbsp;at TypeFunctionsStatus only talk about partially applied type synonyms,
&lt;br&gt;&amp;nbsp;assuming that partially applied type families are already impossible.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Ticket URL: &amp;lt;&lt;a href=&quot;http://hackage.haskell.org/trac/ghc/ticket/2146#comment:4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/ghc/ticket/2146#comment:4&lt;/a&gt;&amp;gt;
&lt;br&gt;GHC &amp;lt;&lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;gt;
&lt;br&gt;The Glasgow Haskell Compiler&lt;br /&gt;_______________________________________________
&lt;br&gt;Glasgow-haskell-bugs mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18350890&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Glasgow-haskell-bugs@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Glasgow-haskell-bugs-f13127.html&quot; embed=&quot;fixTarget[13127]&quot; target=&quot;_top&quot; &gt;Haskell - Glasgow-haskell-bugs&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-GHC---2146%3A-Decomposition-rule-for-equalities-is-too-weak-in-case-of-higher-kinded-type-families-tp15997521p18350890.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18348154</id>
	<title>Re: Re: What is a rigid type variable?</title>
	<published>2008-07-08T13:17:55Z</published>
	<updated>2008-07-08T13:17:55Z</updated>
	<author>
		<name>Henning Thielemann</name>
	</author>
	<content type="html">&lt;br&gt;On Tue, 8 Jul 2008, Ben Franksen wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Wow. Such a short and clear explanation. I have been wondering for some time
&lt;br&gt;&amp;gt; what exactly this 'rigid' means... Please somebody who understands stuff
&lt;br&gt;&amp;gt; like that better than me put it on some wiki page. It's obviously a FAQ.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; BTW, do we have a FAQ page? I think we should have one.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/haskellwiki/Category:FAQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/haskellwiki/Category:FAQ&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18348154&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/What-is-a-rigid-type-variable--tp18061979p18348154.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18347697</id>
	<title>Re: What is a rigid type variable?</title>
	<published>2008-07-08T12:55:03Z</published>
	<updated>2008-07-08T12:55:03Z</updated>
	<author>
		<name>Ben Franksen</name>
	</author>
	<content type="html">Ryan Ingram wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; To answer the question in the subject:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;From &amp;quot;Simple unification-based type inference for GADTs&amp;quot;,
&lt;br&gt;&amp;gt; Peyton-Jones, et al. &amp;nbsp;ICFP 2006.
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://research.microsoft.com/users/simonpj/papers/gadt/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://research.microsoft.com/users/simonpj/papers/gadt/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;quot;Instead of &amp;quot;user-specified type&amp;quot;, we use the briefer term rigid
&lt;br&gt;&amp;gt; type to describe a type that is completely specified, in some
&lt;br&gt;&amp;gt; direct fashion, by a programmer-supplied type annotation.&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So a rigid type is any type specified by a programmer type signature.
&lt;br&gt;&amp;gt; All other types are &amp;quot;wobbly&amp;quot;.
&lt;/div&gt;&lt;br&gt;Wow. Such a short and clear explanation. I have been wondering for some time
&lt;br&gt;what exactly this 'rigid' means... Please somebody who understands stuff
&lt;br&gt;like that better than me put it on some wiki page. It's obviously a FAQ.
&lt;br&gt;&lt;br&gt;BTW, do we have a FAQ page? I think we should have one.
&lt;br&gt;&lt;br&gt;Cheers
&lt;br&gt;Ben
&lt;br&gt;(a little behind on cafe, catching up...)
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18347697&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/What-is-a-rigid-type-variable--tp18061979p18347697.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18347365</id>
	<title>Re: on starting Haskell-Edu, a new education-related Haskell-related mailing list</title>
	<published>2008-07-08T12:38:34Z</published>
	<updated>2008-07-08T12:38:34Z</updated>
	<author>
		<name>Paul Hudak</name>
	</author>
	<content type="html">Simon Marlow wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; My main concern here is that the remit for the new list is not clear 
&lt;br&gt;&amp;gt; enough. &amp;nbsp;I can see a potential need for two lists:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; * a list for discussion related to teaching Haskell;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; * a list devoted to those learning Haskell, with a less research-
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; oriented feel than haskell-cafe.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; it's not obvious to me that both of those needs should be served by a 
&lt;br&gt;&amp;gt; single list. &amp;nbsp;I believe it's important that the mailing lists served 
&lt;br&gt;&amp;gt; by haskell.org should have clear non-overlapping topics.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So I suggest that we add haskell-edu for the purposes of discussing 
&lt;br&gt;&amp;gt; the use and teaching of Haskell in education. &amp;nbsp;For the second point 
&lt;br&gt;&amp;gt; above, I'd be inclined not to add a new list, but I don't feel that 
&lt;br&gt;&amp;gt; strongly - if there's a concensus in favour of adding 
&lt;br&gt;&amp;gt; haskell-beginners (for example), that would be fine.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Simon
&lt;/div&gt;Using Simon's names, I think that there is a greater need for 
&lt;br&gt;haskell-beginners than for haskell-edu. &amp;nbsp;Despite the friendly people on 
&lt;br&gt;haskell-cafe, it is very intimidating, and very busy (sadly, I've mostly 
&lt;br&gt;stopped reading it for the latter reason). &amp;nbsp;I don't think that 
&lt;br&gt;haskell-cafe serves well at all as a forum for beginners, whereas it 
&lt;br&gt;might serve just fine as a forum for instructors.
&lt;br&gt;&lt;br&gt;In any case, these are two distinct purposes, and I agree with Simon 
&lt;br&gt;that it's probably unwise to have a single mailing list for both. &amp;nbsp;I 
&lt;br&gt;would vote for starting a haskell-beginners list and see how it goes. &amp;nbsp;I 
&lt;br&gt;think that a decent number of experienced people will chip in to answer 
&lt;br&gt;questions (they don't have to be experts -- just good at explaining 
&lt;br&gt;things), and in my experience beginners like to help fellow beginners -- 
&lt;br&gt;i.e. it will sustain itself.
&lt;br&gt;&lt;br&gt;I would also be interested in a haskell-edu list, but as I said before I 
&lt;br&gt;don't think the demand for it is as great as that for haskell-beginners.
&lt;br&gt;&lt;br&gt;By the way, the haskell-art mailing list is not very active, but it has 
&lt;br&gt;served a useful role. &amp;nbsp;I wonder if it would help to have a description 
&lt;br&gt;of it (and any new lists that we create) to the descriptions at:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/haskellwiki/Mailing_lists&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/haskellwiki/Mailing_lists&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; -Paul Hudak
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18347365&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-f13131.html&quot; embed=&quot;fixTarget[13131]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/on-starting-Haskell-Edu%2C-a-new-education-related-Haskell-related-mailing-list-tp18214442p18347365.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18346878</id>
	<title>Re: more database issues</title>
	<published>2008-07-08T12:14:25Z</published>
	<updated>2008-07-08T12:14:25Z</updated>
	<author>
		<name>VasiliIGalchin</name>
	</author>
	<content type="html">Thanks to everybody who responded!&lt;br&gt;&lt;br&gt;Vasili&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Jul 8, 2008 at 7:40 AM, Denis Bueno &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18346878&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbueno@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
2008/7/8 Galchin, Vasili &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18346878&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vigalchin@...&lt;/a&gt;&amp;gt;:&lt;br&gt;
&lt;div class=&quot;Ih2E3d&quot;&gt;&amp;gt; Database/HSQL.hsc:66:7:&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; Could not find module `System.Time&amp;#39;:&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; it is a member of package old-time-1.0.0.0, which is hidden&lt;br&gt;
&amp;gt; vigalchin@ubuntu:~/Desktop/hsql-1.7$&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I have a global ghc installation plus a local one off my user directory. In&lt;br&gt;
&amp;gt; any case, when I do &amp;quot;ghc-pkg list&amp;quot; .... old-time-1.0.0.0 is not hidden.&lt;br&gt;
&amp;gt; ????&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;I believe &amp;quot;hidden&amp;quot; here means that the .cabal file isn&amp;#39;t specifically&lt;br&gt;
told it&amp;#39;s okay to use &amp;quot;old-time&amp;quot;, thus it&amp;#39;s &amp;quot;hidden&amp;quot; to cabal, not to&lt;br&gt;
GHC.&lt;br&gt;
&lt;br&gt;
If you add &amp;quot;old-time&amp;quot; to the Build-depends field of the package, you&lt;br&gt;
should be able to get rid of this message.&lt;br&gt;
&lt;br&gt;
--&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&amp;nbsp;Denis&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18346878&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/more-database-issues-tp18332162p18346878.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18346720</id>
	<title>Re: data Color3 a = Color3 !a !a !a</title>
	<published>2008-07-08T12:05:42Z</published>
	<updated>2008-07-08T12:05:42Z</updated>
	<author>
		<name>Albert Y. C. Lai</name>
	</author>
	<content type="html">Daryoush Mehrtash wrote:
&lt;br&gt;&amp;gt; Can some one explain what the !a does in this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; data Color3 a = Color3 !a !a !a
&lt;br&gt;&lt;br&gt;Shameless plug: &lt;a href=&quot;http://www.vex.net/~trebla/haskell/strict-field.xhtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.vex.net/~trebla/haskell/strict-field.xhtml&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18346720&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/data-Color3-a-%3D-Color3-%21a-%21a-%21a-tp18336933p18346720.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18345790</id>
	<title>Re: Cabal and external dependencies</title>
	<published>2008-07-08T11:22:54Z</published>
	<updated>2008-07-08T11:22:54Z</updated>
	<author>
		<name>Henning Thielemann</name>
	</author>
	<content type="html">&lt;br&gt;On Tue, 8 Jul 2008, Jim Burton wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Is cabal capable of detecting missing external deps, e.g. for packages
&lt;br&gt;&amp;gt; that provide bindings? Does this depend
&lt;br&gt;&amp;gt; on package authors and some use of a config script seperate to .cabal?
&lt;br&gt;&amp;gt; I'm just curious because I ran into this just now -- I tried to
&lt;br&gt;&amp;gt; install dons' hackage-sparklines with cabal-install today (whilst reading
&lt;br&gt;&amp;gt; his blog post about the same) which failed, in a way that seemed
&lt;br&gt;&amp;gt; cryptic at first. I needed to notice that it was gd which failed and
&lt;br&gt;&amp;gt; guess that I should install the libgd dev files. It's obvious
&lt;br&gt;&amp;gt; that I would need these, you might say, but it certainly has the
&lt;br&gt;&amp;gt; potential to confuse people...
&lt;/div&gt;&lt;br&gt;&lt;a href=&quot;http://hackage.haskell.org/trac/hackage/ticket/262&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/hackage/ticket/262&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18345790&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Cabal-and-external-dependencies-tp18343795p18345790.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18344511</id>
	<title>Re: data Color3 a = Color3 !a !a !a</title>
	<published>2008-07-08T10:20:31Z</published>
	<updated>2008-07-08T10:20:31Z</updated>
	<author>
		<name>Ryan Ingram</name>
	</author>
	<content type="html">A simple example to help understand the difference
&lt;br&gt;&lt;br&gt;&amp;gt; data NoStrict a = NoStrict a deriving Show
&lt;br&gt;&amp;gt; data Strict a = Strict !a deriving Show
&lt;br&gt;&lt;br&gt;&amp;gt; ns1 = NoStrict ()
&lt;br&gt;&amp;gt; ns2 = NoStrict undefined
&lt;br&gt;&amp;gt; ns3 = undefined
&lt;br&gt;&lt;br&gt;&amp;gt; nf1 (NoStrict ()) = &amp;quot;ok&amp;quot;
&lt;br&gt;&amp;gt; nf2 (NoStrict _) = &amp;quot;ok&amp;quot;
&lt;br&gt;&lt;br&gt;&amp;gt; s1 = Strict ()
&lt;br&gt;&amp;gt; s2 = Strict undefined
&lt;br&gt;&amp;gt; s3 = undefined
&lt;br&gt;&lt;br&gt;&amp;gt; f1 (Strict ()) = &amp;quot;ok&amp;quot;
&lt;br&gt;&amp;gt; f2 (Strict _) = &amp;quot;ok&amp;quot;
&lt;br&gt;&lt;br&gt;The difference between these:
&lt;br&gt;&lt;br&gt;*Strict&amp;gt; nf2 ns2
&lt;br&gt;&amp;quot;ok&amp;quot;
&lt;br&gt;*Strict&amp;gt; f2 s2
&lt;br&gt;&amp;quot;*** Exception: Prelude.undefined
&lt;br&gt;&lt;br&gt;s2 and s3 are both the same (undefined), while ns2 and ns3 are different.
&lt;br&gt;&lt;br&gt;As to why you'd want that behavior? &amp;nbsp;Here are a couple of reasons:
&lt;br&gt;1) You can avoid hiding exceptions in strict data structures; if the
&lt;br&gt;top level evaluates, you know the entire structure is valid.
&lt;br&gt;2) With -funbox-strict-fields, the compiler can remove a level of
&lt;br&gt;indirection; the performance difference between a structure that
&lt;br&gt;contains three machine words and a structure that contains three
&lt;br&gt;pointers to boxed integers is pretty significant.
&lt;br&gt;&lt;br&gt;On the other hand, you lose the benefits of laziness; I find most
&lt;br&gt;&amp;quot;structure-like&amp;quot; data structures work better strict, but that
&lt;br&gt;&amp;quot;list-like&amp;quot; data structures definitely gain an advantage from
&lt;br&gt;laziness.
&lt;br&gt;&lt;br&gt;&amp;nbsp; -- ryan
&lt;br&gt;&lt;br&gt;&lt;br&gt;2008/7/8 Daryoush Mehrtash &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18344511&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dmehrtash@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Can some one explain what the !a does in this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; data Color3 a = Color3 !a !a !a
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Daryoush
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Haskell-Cafe mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18344511&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18344511&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/data-Color3-a-%3D-Color3-%21a-%21a-%21a-tp18336933p18344511.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18343795</id>
	<title>Cabal and external dependencies</title>
	<published>2008-07-08T09:49:50Z</published>
	<updated>2008-07-08T09:49:50Z</updated>
	<author>
		<name>Jim Burton</name>
	</author>
	<content type="html">Is cabal capable of detecting missing external deps, e.g. for packages
&lt;br&gt;that provide bindings? Does this depend
&lt;br&gt;on package authors and some use of a config script seperate to .cabal?
&lt;br&gt;I'm just curious because I ran into this just now -- I tried to
&lt;br&gt;install dons' hackage-sparklines with cabal-install today (whilst reading
&lt;br&gt;his blog post about the same) which failed, in a way that seemed
&lt;br&gt;cryptic at first. I needed to notice that it was gd which failed and
&lt;br&gt;guess that I should install the libgd dev files. It's obvious
&lt;br&gt;that I would need these, you might say, but it certainly has the
&lt;br&gt;potential to confuse people... 
&lt;br&gt;&lt;br&gt;Jim
&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18343795&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Cabal-and-external-dependencies-tp18343795p18343795.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18342616</id>
	<title>Re: [GHC] #2411: RaiseAsync and STM segfault with stop_at_atomically in some circumstances.</title>
	<published>2008-07-08T08:58:26Z</published>
	<updated>2008-07-08T08:58:26Z</updated>
	<author>
		<name>GHC-2</name>
	</author>
	<content type="html">#2411: RaiseAsync and STM segfault with stop_at_atomically in some circumstances.
&lt;br&gt;----------------------------+-----------------------------------------------
&lt;br&gt;&amp;nbsp;Reporter: &amp;nbsp;sclv &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Owner: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Type: &amp;nbsp;bug &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status: &amp;nbsp;new &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;Priority: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp;Milestone: &amp;nbsp;6.10.1 
&lt;br&gt;Component: &amp;nbsp;Runtime System &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version: &amp;nbsp;6.8.3 &amp;nbsp;
&lt;br&gt;&amp;nbsp;Severity: &amp;nbsp;normal &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; Resolution: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp;Keywords: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; Difficulty: &amp;nbsp;Unknown
&lt;br&gt;&amp;nbsp;Testcase: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; Architecture: &amp;nbsp;Unknown
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Os: &amp;nbsp;Unknown &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp;
&lt;br&gt;----------------------------+-----------------------------------------------
&lt;br&gt;Comment (by sclv):
&lt;br&gt;&lt;br&gt;&amp;nbsp;Ok. So I've narrowed down a relatively simple test case. It crashes even
&lt;br&gt;&amp;nbsp;at -N1 but crashes much more immediately at -N4. The backtrace is the same
&lt;br&gt;&amp;nbsp;as above.
&lt;br&gt;&lt;br&gt;&amp;nbsp;From this test case its pretty clear that there's an issue either with
&lt;br&gt;&amp;nbsp;catchSTM or directly with RaiseAsync.c or with their interaction, and in
&lt;br&gt;&amp;nbsp;fact unsafePerformIO and unsafeIOToSTM are nowhere to be found in this
&lt;br&gt;&amp;nbsp;code.
&lt;br&gt;&lt;br&gt;&amp;nbsp;This test case can probably be distilled down to something even simpler
&lt;br&gt;&amp;nbsp;that doesn't use any of the typeclass toys I was playing with that ended
&lt;br&gt;&amp;nbsp;up here in the first place. But I've taken it about as far as I can today.
&lt;br&gt;&lt;br&gt;&amp;nbsp;As far as I know though, this is only triggered during validation during
&lt;br&gt;&amp;nbsp;GC, which is the only time stop_at_atomically is set. So one question I
&lt;br&gt;&amp;nbsp;have is why a thread which is already hit by an asynchronous exception
&lt;br&gt;&amp;nbsp;should *then* be treated as invalid as well and subject to an attempt to
&lt;br&gt;&amp;nbsp;roll back during scheduleDoGC. So it may be that there are two different
&lt;br&gt;&amp;nbsp;mechanisms (one for exception handling via catchSTM and one for
&lt;br&gt;&amp;nbsp;validation) that end up stepping on one another's toes. Just spinning a
&lt;br&gt;&amp;nbsp;theory though.
&lt;br&gt;&lt;br&gt;&amp;nbsp;I should note this bug occurs in 6.8.3 up through HEAD as far as I know.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Ticket URL: &amp;lt;&lt;a href=&quot;http://hackage.haskell.org/trac/ghc/ticket/2411#comment:3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/trac/ghc/ticket/2411#comment:3&lt;/a&gt;&amp;gt;
&lt;br&gt;GHC &amp;lt;&lt;a href=&quot;http://www.haskell.org/ghc/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/ghc/&lt;/a&gt;&amp;gt;
&lt;br&gt;The Glasgow Haskell Compiler&lt;br /&gt;_______________________________________________
&lt;br&gt;Glasgow-haskell-bugs mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18342616&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Glasgow-haskell-bugs@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Glasgow-haskell-bugs-f13127.html&quot; embed=&quot;fixTarget[13127]&quot; target=&quot;_top&quot; &gt;Haskell - Glasgow-haskell-bugs&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-GHC---2411%3A-RaiseAsync-and-STM-segfault-with-stop_at_atomically-in-some-circumstances.-tp18223480p18342616.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18342009</id>
	<title>Re: Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T08:30:51Z</published>
	<updated>2008-07-08T08:30:51Z</updated>
	<author>
		<name>Yitzchak Gale</name>
	</author>
	<content type="html">Ian Lynagh wrote:
&lt;br&gt;&amp;gt;&amp;gt; We can do that, although to actually get people to change I think we'd
&lt;br&gt;&amp;gt;&amp;gt; need a good helping of DEPRECATED pragmas...
&lt;br&gt;&lt;br&gt;Bulat Ziganshin wrote:
&lt;br&gt;&amp;gt; great idea! for even increasing pain, of course
&lt;br&gt;&lt;br&gt;Assuming that the new exceptions will use the same module
&lt;br&gt;name (I know, you don't like that assumption), do you think
&lt;br&gt;that Ian's suggestion makes things worse?
&lt;br&gt;&lt;br&gt;-Yitz
&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18342009&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18342009.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18341913</id>
	<title>Re: Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T08:27:39Z</published>
	<updated>2008-07-08T08:27:39Z</updated>
	<author>
		<name>Yitzchak Gale</name>
	</author>
	<content type="html">Hi Bulat,
&lt;br&gt;&lt;br&gt;I wrote:
&lt;br&gt;&amp;gt;&amp;gt; ...The primitive is block, not bracket.
&lt;br&gt;&amp;gt;&amp;gt; More specifically, blockAsyncExceptions# and unblockAsyncExceptions#.
&lt;br&gt;&amp;gt;&amp;gt; Those are used to implement block, which is used to
&lt;br&gt;&amp;gt;&amp;gt; implement bracket, catch, etc.
&lt;br&gt;&lt;br&gt;Bulat Ziganshin wrote:
&lt;br&gt;&amp;gt; actually it's a catch# used to implement catch used for everything
&lt;br&gt;&amp;gt; else.
&lt;br&gt;&lt;br&gt;Yes, there is also that primitive that is only for IO.
&lt;br&gt;I don't remember this moment whether it might be
&lt;br&gt;possible to work around this one.
&lt;br&gt;&lt;br&gt;&amp;gt; primitives you are mentioned only enable/disable delivering of
&lt;br&gt;&amp;gt; async exceptions
&lt;br&gt;&lt;br&gt;Yes, and they are critical for catch to avoid deadlock.
&lt;br&gt;For this, I didn't find any workaround for the current primitives.
&lt;br&gt;&lt;br&gt;If instead we had
&lt;br&gt;&lt;br&gt;startBlocking :: IO ()
&lt;br&gt;stopBlocking :: IO ()
&lt;br&gt;&lt;br&gt;then we could implement block for other monads. At the time,
&lt;br&gt;Simon Marlow wrote that this could be done, but that we
&lt;br&gt;would lose out on a certain optimization.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Yitz
&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18341913&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18341913.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18341648</id>
	<title>Re: Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T08:17:06Z</published>
	<updated>2008-07-08T08:17:06Z</updated>
	<author>
		<name>Yitzchak Gale</name>
	</author>
	<content type="html">Hi Bulat,
&lt;br&gt;&lt;br&gt;I wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; o For 6.10, make the new Exceptions available so that
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; everyone can start working on switching, but leave old
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; Exceptions as the default so that existing programs still
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; work. Prominently mark old exceptions as deprecated
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; in all documentation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; o In the next version, make the new Exceptions the default.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; Make sure that programs using new Exceptions for 6.10
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; will still work (e.g., leave NewException as an alias for
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; Exception, or whatever).
&lt;/div&gt;&lt;br&gt;Bulat Ziganshin wrote:
&lt;br&gt;&amp;gt; oh... all that we need to do is just to use new module name for new
&lt;br&gt;&amp;gt; exceptions
&lt;br&gt;&lt;br&gt;Yes, that would be even better. There seems to be an
&lt;br&gt;assumption that the module name will remain the same,
&lt;br&gt;so that is why I suggested the above.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Yitz
&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18341648&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18341648.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18340861</id>
	<title>Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T07:42:48Z</published>
	<updated>2008-07-08T07:42:48Z</updated>
	<author>
		<name>Bulat Ziganshin-2</name>
	</author>
	<content type="html">Hello Yitzchak,
&lt;br&gt;&lt;br&gt;Tuesday, July 8, 2008, 12:42:05 AM, you wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; It might help to clarify whether you're talking about IO.bracket and
&lt;br&gt;&amp;gt;&amp;gt; IO.catch or Control.Exception.bracket and Control.Exception.catch?
&lt;br&gt;&lt;br&gt;&amp;gt; Oops, sorry, you're right. The primitive is block, not bracket.
&lt;br&gt;&amp;gt; More specifically, blockAsyncExceptions# and unblockAsyncExceptions#.
&lt;br&gt;&amp;gt; Those are used to implement block, which is used to
&lt;br&gt;&amp;gt; implement bracket, catch, etc.
&lt;br&gt;&lt;br&gt;actually it's a catch# used to implement catch used for everything
&lt;br&gt;else. primitives you are mentioned only enable/disable delivering of
&lt;br&gt;async exceptions
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Best regards,
&lt;br&gt;&amp;nbsp;Bulat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340861&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Bulat.Ziganshin@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340861&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18340861.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18340854</id>
	<title>Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T07:41:07Z</published>
	<updated>2008-07-08T07:41:07Z</updated>
	<author>
		<name>Bulat Ziganshin-2</name>
	</author>
	<content type="html">Hello Ian,
&lt;br&gt;&lt;br&gt;Monday, July 7, 2008, 7:40:34 PM, you wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; We can do that, although to actually get people to change I think we'd
&lt;br&gt;&amp;gt; need a good helping of DEPRECATED pragmas. So in 6.10 we'd have:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module OldException where ... -- everything has DEPRECATED pragmas
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module NewException where ...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module Exception (module OldException)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where import OldException
&lt;br&gt;&lt;br&gt;&amp;gt; and then in 6.12:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module OldException where ... -- everything has DEPRECATED pragmas
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module Exception where ...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; module {-# DEPRECATED &amp;quot;Use Exception&amp;quot; #-} NewException (module Exception)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where import Exception
&lt;br&gt;&lt;br&gt;great idea! for even increasing pain, of course
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Best regards,
&lt;br&gt;&amp;nbsp;Bulat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340854&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Bulat.Ziganshin@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340854&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18340854.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18340852</id>
	<title>Re[2]: Proposal: Extensible exceptions</title>
	<published>2008-07-08T07:36:15Z</published>
	<updated>2008-07-08T07:36:15Z</updated>
	<author>
		<name>Bulat Ziganshin-2</name>
	</author>
	<content type="html">Hello Yitzchak,
&lt;br&gt;&lt;br&gt;Sunday, July 6, 2008, 3:39:52 AM, you wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; o For 6.10, make the new Exceptions available so that
&lt;br&gt;&amp;gt; &amp;nbsp; everyone can start working on switching, but leave old
&lt;br&gt;&amp;gt; &amp;nbsp; Exceptions as the default so that existing programs still
&lt;br&gt;&amp;gt; &amp;nbsp; work. Prominently mark old exceptions as deprecated
&lt;br&gt;&amp;gt; &amp;nbsp; in all documentation.
&lt;br&gt;&lt;br&gt;&amp;gt; o In the next version, make the new Exceptions the default.
&lt;br&gt;&amp;gt; &amp;nbsp; Make sure that programs using new Exceptions for 6.10
&lt;br&gt;&amp;gt; &amp;nbsp; will still work (e.g., leave NewException as an alias for
&lt;br&gt;&amp;gt; &amp;nbsp; Exception, or whatever).
&lt;br&gt;&lt;br&gt;oh... all that we need to do is just to use new module name for new
&lt;br&gt;exceptions
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Best regards,
&lt;br&gt;&amp;nbsp;Bulat &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340852&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Bulat.Ziganshin@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Libraries mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18340852&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Libraries@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/libraries&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/libraries&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Libraries-f13141.html&quot; embed=&quot;fixTarget[13141]&quot; target=&quot;_top&quot; &gt;Haskell - Libraries&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Proposal%3A-Extensible-exceptions-tp18279566p18340852.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18339931</id>
	<title>Re: Swapping Monads</title>
	<published>2008-07-08T06:59:01Z</published>
	<updated>2008-07-08T06:59:01Z</updated>
	<author>
		<name>Derek Elkins</name>
	</author>
	<content type="html">On Tue, 2008-07-08 at 06:39 +0100, Dominic Steinitz wrote:
&lt;br&gt;&amp;gt; I have a solution so this is for interest only.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It is not normally the case that two monads compose to give another
&lt;br&gt;&amp;gt; monad. Monad transformers capture when this is possible. However, when
&lt;br&gt;&amp;gt; there is a &amp;quot;swap&amp;quot; function satisfying some commutative diagrams then it
&lt;br&gt;&amp;gt; can be proved that the monads compose &amp;nbsp;to produce a monad.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is there such a swap function in a library? I had a look in the
&lt;br&gt;&amp;gt; comprehensive category-extra package but couldn't find anything.
&lt;br&gt;&lt;br&gt;You didn't look hard enough. &amp;nbsp;What you want is called a distributive law
&lt;br&gt;in category theory. &amp;nbsp;A class for exactly what you want is in
&lt;br&gt;Control.Functor.Extras.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://hackage.haskell.org/packages/archive/category-extras/0.53.5/doc/html/Control-Functor-Extras.html#t%3ADistributes&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/packages/archive/category-extras/0.53.5/doc/html/Control-Functor-Extras.html#t%3ADistributes&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18339931&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Swapping-Monads-tp18332229p18339931.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18338280</id>
	<title>Re: more database issues</title>
	<published>2008-07-08T05:40:01Z</published>
	<updated>2008-07-08T05:40:01Z</updated>
	<author>
		<name>Denis Bueno</name>
	</author>
	<content type="html">2008/7/8 Galchin, Vasili &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18338280&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vigalchin@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; Database/HSQL.hsc:66:7:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Could not find module `System.Time':
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; it is a member of package old-time-1.0.0.0, which is hidden
&lt;br&gt;&amp;gt; vigalchin@ubuntu:~/Desktop/hsql-1.7$
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have a global ghc installation plus a local one off my user directory. In
&lt;br&gt;&amp;gt; any case, when I do &amp;quot;ghc-pkg list&amp;quot; .... old-time-1.0.0.0 is not hidden.
&lt;br&gt;&amp;gt; ????
&lt;br&gt;&lt;br&gt;I believe &amp;quot;hidden&amp;quot; here means that the .cabal file isn't specifically
&lt;br&gt;told it's okay to use &amp;quot;old-time&amp;quot;, thus it's &amp;quot;hidden&amp;quot; to cabal, not to
&lt;br&gt;GHC.
&lt;br&gt;&lt;br&gt;If you add &amp;quot;old-time&amp;quot; to the Build-depends field of the package, you
&lt;br&gt;should be able to get rid of this message.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp;Denis
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18338280&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/more-database-issues-tp18332162p18338280.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18338140</id>
	<title>Re: Associative Commutative Unification</title>
	<published>2008-07-08T05:31:56Z</published>
	<updated>2008-07-08T05:31:56Z</updated>
	<author>
		<name>Edsko de Vries</name>
	</author>
	<content type="html">On Tue, Jul 08, 2008 at 08:24:45AM -0400, John D. Ramsdell wrote:
&lt;br&gt;&amp;gt; The Haskell typechecker contains a nice example of a unifier for
&lt;br&gt;&amp;gt; freely generated terms. &amp;nbsp;My focus is on equational unification, but
&lt;br&gt;&amp;gt; thanks anyway.
&lt;br&gt;&lt;br&gt;Are you aware of &amp;quot;Term Rewriting and all That&amp;quot;? It describes how to do
&lt;br&gt;associative commutative unification; whether it satisfies your
&lt;br&gt;'obviously correct' criterion I don't know. 
&lt;br&gt;&lt;br&gt;Edsko
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18338140&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Associative-Commutative-Unification-tp18309097p18338140.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18337987</id>
	<title>Re: extensible data types in Haskell?</title>
	<published>2008-07-08T05:25:11Z</published>
	<updated>2008-07-08T05:25:11Z</updated>
	<author>
		<name>David Walker-12</name>
	</author>
	<content type="html">thanks for everyone's help -- it seems the simplest solution is to use
&lt;br&gt;the Typeable class, existential types and type-safe cast.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Dave
&lt;br&gt;&lt;br&gt;On Sun, Jul 6, 2008 at 9:18 PM, Don Stewart &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18337987&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dons@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; princedpw:
&lt;br&gt;&amp;gt;&amp;gt; Hi all,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; SML conveniently contains the type &amp;quot;exn&amp;quot; which is an instance of an
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;extensible data type&amp;quot;. &amp;nbsp;In other words, unlike normal data types that
&lt;br&gt;&amp;gt;&amp;gt; are &amp;quot;closed&amp;quot; (can't admit new constructors once defined), SML's exn
&lt;br&gt;&amp;gt;&amp;gt; type is &amp;quot;open,&amp;quot; allowing programmers to keep adding new alternatives
&lt;br&gt;&amp;gt;&amp;gt; as often as they choose. &amp;nbsp;Like normal datatypes, the elimination form
&lt;br&gt;&amp;gt;&amp;gt; for an extensible data type is a case statement (or match function).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Friends have told me that Haskell doesn't have extensible data types.
&lt;br&gt;&amp;gt;&amp;gt; However, it seems fairly straightforward to code them up using type
&lt;br&gt;&amp;gt;&amp;gt; classes....though the solution I'm thinking of has a little bit of
&lt;br&gt;&amp;gt;&amp;gt; boilerplate I'd like to scrap (you have to define a new type
&lt;br&gt;&amp;gt;&amp;gt; declaration *and* an instance of a type class with a &amp;quot;match&amp;quot; method)
&lt;br&gt;&amp;gt;&amp;gt; and matching occurs through a string comparison (which can lead to
&lt;br&gt;&amp;gt;&amp;gt; silly programmer errors if there is accidentally a typo in the
&lt;br&gt;&amp;gt;&amp;gt; string).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You should probably use Typeable here, for the type matching, rather
&lt;br&gt;&amp;gt; than a custom matcher. class Typeable a =&amp;gt; Extensible a, this leads to a
&lt;br&gt;&amp;gt; fairly straighforward extensible data type, where the open instance
&lt;br&gt;&amp;gt; definition lets you add variants on the fly.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Anyway, it's possible with some thought I could come up with a better
&lt;br&gt;&amp;gt;&amp;gt; solution, but before worrying about it, I figured I'd ask if anybody
&lt;br&gt;&amp;gt;&amp;gt; else already has a package that does this. &amp;nbsp;It seems like a pretty
&lt;br&gt;&amp;gt;&amp;gt; natural feature to want to have.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There's a number of ways to do this, including fully statically via type
&lt;br&gt;&amp;gt; classes and existential types, or via the Dynamic type.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Googling for &amp;quot;expression problem Haskell&amp;quot; will turn up some things. Some
&lt;br&gt;&amp;gt; implementions of open data types in use can be found in xmonad, and the
&lt;br&gt;&amp;gt; extensible exceptions proposal here,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://209.85.173.104/search?q=cache:xeXhle5KAqkJ:www.haskell.org/~simonmar/papers/ext-exceptions.pdf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://209.85.173.104/search?q=cache:xeXhle5KAqkJ:www.haskell.org/~simonmar/papers/ext-exceptions.pdf&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- Don
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18337987&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/extensible-data-types-in-Haskell--tp18308345p18337987.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18337973</id>
	<title>Re: Associative Commutative Unification</title>
	<published>2008-07-08T05:24:45Z</published>
	<updated>2008-07-08T05:24:45Z</updated>
	<author>
		<name>John D. Ramsdell-3</name>
	</author>
	<content type="html">The Haskell typechecker contains a nice example of a unifier for
&lt;br&gt;freely generated terms. &amp;nbsp;My focus is on equational unification, but
&lt;br&gt;thanks anyway.
&lt;br&gt;&lt;br&gt;John
&lt;br&gt;&lt;br&gt;On Sun, Jul 6, 2008 at 10:38 PM, Don Stewart &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18337973&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dons@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ramsdell0:
&lt;br&gt;&amp;gt;&amp;gt; I'd like to write an obviously correct implementation of a unifier, a
&lt;br&gt;&amp;gt;&amp;gt; program that when given two terms, finds a substitution that makes the
&lt;br&gt;&amp;gt;&amp;gt; two terms equal. &amp;nbsp;The phrase &amp;quot;obviously correct&amp;quot; is meant to imply
&lt;br&gt;&amp;gt;&amp;gt; that the clarity of the code trumps efficiency. &amp;nbsp;As near as I can
&lt;br&gt;&amp;gt;&amp;gt; tell, high performance unifiers are full of side-effects, and
&lt;br&gt;&amp;gt;&amp;gt; achieving the same performance without side-effects in Haskell is
&lt;br&gt;&amp;gt;&amp;gt; difficult or impossible.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In contrast, it is easy to write obviously correct Hasklell
&lt;br&gt;&amp;gt;&amp;gt; implementations of unifiers for freely generated term algebras. &amp;nbsp;One
&lt;br&gt;&amp;gt;&amp;gt; can use Lawrence Paulson's code in ML for the Working Programmer as a
&lt;br&gt;&amp;gt;&amp;gt; template or follow Martelli and Montanari's simple set of rules.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; My problem is one of my operators is multiplication, which is
&lt;br&gt;&amp;gt;&amp;gt; associative and commutative. &amp;nbsp;These two properties make unification
&lt;br&gt;&amp;gt;&amp;gt; much more difficult. &amp;nbsp;Mark Stickel described a complete unification
&lt;br&gt;&amp;gt;&amp;gt; algorithm for this problem, but the task of translating his
&lt;br&gt;&amp;gt;&amp;gt; description into an obviously correct Haskell program appears to be
&lt;br&gt;&amp;gt;&amp;gt; difficult. &amp;nbsp;For example, the algorithm requires the generation of the
&lt;br&gt;&amp;gt;&amp;gt; basis of solutions to linear homogeneous diophantine equations. &amp;nbsp;I
&lt;br&gt;&amp;gt;&amp;gt; haven't located an algorithm for this part yet.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; If you have experience implemented equational unification in Haskell,
&lt;br&gt;&amp;gt;&amp;gt; please share it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;quot;Typing Haskell in Haskell&amp;quot; lives here,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://hackage.haskell.org/cgi-bin/hackage-scripts/package/thih&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/cgi-bin/hackage-scripts/package/thih&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;quot;a Haskell program that implements a Haskell typechecker, thus providing
&lt;br&gt;&amp;gt; a mathematically rigorous specification in a notation that is familiar
&lt;br&gt;&amp;gt; to Haskell users. We expect this program to fill a serious gap in
&lt;br&gt;&amp;gt; current descriptions of Haskell, both as a starting point for
&lt;br&gt;&amp;gt; discussions about existing features of the type system, and as a
&lt;br&gt;&amp;gt; platform from which to explore new proposals&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Might be useful as a starting point.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- Don
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18337973&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Associative-Commutative-Unification-tp18309097p18337973.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18337036</id>
	<title>ANN: Uniplate 1.2</title>
	<published>2008-07-08T04:31:14Z</published>
	<updated>2008-07-08T04:31:14Z</updated>
	<author>
		<name>Neil Mitchell</name>
	</author>
	<content type="html">I am pleased to announce Uniplate 1.2, available from Hackage:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplate&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplate&lt;/a&gt;&lt;br&gt;&lt;br&gt;Description
&lt;br&gt;===========
&lt;br&gt;&lt;br&gt;Uniplate is a library for reducing boilerplate code, by performing
&lt;br&gt;generic traversals. For example, given a data type with a Uniplate
&lt;br&gt;instance:
&lt;br&gt;&lt;br&gt;data Expr = Var String | Add String String | Mul String String | ...
&lt;br&gt;&lt;br&gt;instance Uniplate Expr where ...
&lt;br&gt;&lt;br&gt;We can write a function to get all the variables in an Expr as:
&lt;br&gt;&lt;br&gt;vars x = [v | Var v &amp;lt;- universe x]
&lt;br&gt;&lt;br&gt;Additionally, Uniplate can work with the built-in deriving
&lt;br&gt;Data/Typeable support in GHC to eliminate the need for writing
&lt;br&gt;Uniplate instances. The library is described in Chapter 3 of my thesis
&lt;br&gt;(&lt;a href=&quot;http://www-users.cs.york.ac.uk/~ndm/thesis/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www-users.cs.york.ac.uk/~ndm/thesis/&lt;/a&gt;), complete with simple
&lt;br&gt;examples for most functions.
&lt;br&gt;&lt;br&gt;Most Haskell users working with a moderately complex data type, such
&lt;br&gt;as an abstract syntax tree, should be using some form of boilerplate
&lt;br&gt;removal. Uniplate is used in projects such as Yhc, Hoogle, Reach,
&lt;br&gt;Reduceron, Catch, Supero and many others.
&lt;br&gt;&lt;br&gt;&lt;br&gt;What's New
&lt;br&gt;==========
&lt;br&gt;&lt;br&gt;* Fixed the descendBi function, previously could give the wrong results.
&lt;br&gt;&lt;br&gt;* Add holes, the 1-step version of contexts
&lt;br&gt;&lt;br&gt;* The underlying data type of the library has been changed from a list
&lt;br&gt;to a tree, as suggested by Koen Claessen. This change, plus some other
&lt;br&gt;performance tweaks, gives a 25-50% speed up over Uniplate 1.0.
&lt;br&gt;&lt;br&gt;* A compatibility layer with Compos and SYB has been added. By
&lt;br&gt;importing Data.Generics.Uniplate.Compos/SYB an interface approximating
&lt;br&gt;the other library will be provided, which can be used to help porting
&lt;br&gt;programs to Uniplate. The implementations are not exact duplicates of
&lt;br&gt;the library, but in many examples should be sufficient.
&lt;br&gt;&lt;br&gt;There are some slight API changes, but should be minimal. If your
&lt;br&gt;program hits one of these changes, please email me and I will fix it
&lt;br&gt;for you.
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;&lt;br&gt;Neil
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18337036&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-f13131.html&quot; embed=&quot;fixTarget[13131]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/ANN%3A-Uniplate-1.2-tp18337036p18337036.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18336967</id>
	<title>Re: data Color3 a = Color3 !a !a !a</title>
	<published>2008-07-08T04:26:30Z</published>
	<updated>2008-07-08T04:26:30Z</updated>
	<author>
		<name>Janis Voigtlaender</name>
	</author>
	<content type="html">Daryoush Mehrtash wrote:
&lt;br&gt;&amp;gt; Can some one explain what the !a does in this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; data Color3 
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&lt;/a&gt;&amp;gt; 
&lt;br&gt;&amp;gt; a = Color3 
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#v%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#v%3AColor3&lt;/a&gt;&amp;gt; 
&lt;br&gt;&amp;gt; !a !a !a
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&lt;/a&gt;&lt;br&gt;&lt;br&gt;In short,
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://haskell.org/onlinereport/decls.html#strictness-flags&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://haskell.org/onlinereport/decls.html#strictness-flags&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dr. Janis Voigtlaender
&lt;br&gt;&lt;a href=&quot;http://wwwtcs.inf.tu-dresden.de/~voigt/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wwwtcs.inf.tu-dresden.de/~voigt/&lt;/a&gt;&lt;br&gt;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18336967&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;voigt@...&lt;/a&gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18336967&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/data-Color3-a-%3D-Color3-%21a-%21a-%21a-tp18336933p18336967.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18336933</id>
	<title>data Color3 a = Color3 !a !a !a</title>
	<published>2008-07-08T04:22:46Z</published>
	<updated>2008-07-08T04:22:46Z</updated>
	<author>
		<name>Daryoush Mehrtash-2</name>
	</author>
	<content type="html">Can some one explain what the !a does in this:&lt;br&gt;&lt;br&gt;&lt;span class=&quot;keyword&quot;&gt;data&lt;/span&gt; &lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Color3&lt;/a&gt; a = &lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#v%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Color3&lt;/a&gt; !a !a !a&lt;br&gt;
&lt;br&gt;&lt;a href=&quot;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cvs.haskell.org/Hugs/pages/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-VertexSpec.html#t%3AColor3&lt;/a&gt;&lt;br&gt;
&lt;br&gt;Thanks,&lt;br&gt;&lt;br&gt;Daryoush&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18336933&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/data-Color3-a-%3D-Color3-%21a-%21a-%21a-tp18336933p18336933.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18336638</id>
	<title>Re: Interesting feature</title>
	<published>2008-07-08T04:00:04Z</published>
	<updated>2008-07-08T04:00:04Z</updated>
	<author>
		<name>Benjamin L.Russell</name>
	</author>
	<content type="html">On Tue, 8 Jul 2008 16:59:00 +1000, &amp;quot;David Overton&amp;quot;
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18336638&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;david@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;Also, see my recent attempts at (constraint) logic programming in Haskell:
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://overtond.blogspot.com/2008/07/pre.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://overtond.blogspot.com/2008/07/pre.html&lt;/a&gt;&lt;br&gt;&amp;gt;&lt;a href=&quot;http://overtond.blogspot.com/2008/07/haskell-sudoku-solver-using-finite.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://overtond.blogspot.com/2008/07/haskell-sudoku-solver-using-finite.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Whoops! &amp;nbsp;Sorry, I rushed to reply with my earlier message, and forgot
&lt;br&gt;to respond to this part of your post.
&lt;br&gt;&lt;br&gt;Your blog posts about a Haskell Sudoku solver remind me of similar
&lt;br&gt;blog posts about Sudoku solvers in Python (see &amp;quot;Solving Every Sudoku
&lt;br&gt;Puzzle&amp;quot;: &lt;a href=&quot;http://norvig.com/sudoku.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://norvig.com/sudoku.html&lt;/a&gt;) and Scheme (see &amp;quot;Schemely:
&lt;br&gt;Sudoku Solver1&amp;quot;:
&lt;br&gt;&lt;a href=&quot;http://www.bobmc.net/cgi-bin/Schemely.pl/Sudoku_Solver1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.bobmc.net/cgi-bin/Schemely.pl/Sudoku_Solver1&lt;/a&gt;, and &amp;quot;Schemely
&lt;br&gt;Blog: Scheme Sudoku Solver&amp;quot;:
&lt;br&gt;&lt;a href=&quot;http://schemely.blogspot.com/2006/02/scheme-sudoku-solver.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://schemely.blogspot.com/2006/02/scheme-sudoku-solver.html&lt;/a&gt;). &amp;nbsp;Some
&lt;br&gt;programmers learn new languages by translating code for Sudoku solvers
&lt;br&gt;from one language that they already know well to another language that
&lt;br&gt;they are trying to learn.
&lt;br&gt;&lt;br&gt;Because solving a Sudoku puzzle can be accomplished more easily by
&lt;br&gt;using constraint propagation, in which placing a constraint on one
&lt;br&gt;square can cause further constraints to be placed on other squares,
&lt;br&gt;this definition lends itself to constraint programming. &amp;nbsp;Since
&lt;br&gt;constraint programming is a form of declarative programming, this form
&lt;br&gt;of programming lends itself to constraint logic programming. &amp;nbsp;As an
&lt;br&gt;example, GNU Prolog has a constraint logic programming interpreter;
&lt;br&gt;however, GNU Prolog lacks strong typing.
&lt;br&gt;&lt;br&gt;If you are interested in constraint programming, you may wish to
&lt;br&gt;investigate the multi-paradigm programming language Oz (see
&lt;br&gt;&lt;a href=&quot;http://www.mozart-oz.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mozart-oz.org/&lt;/a&gt;), which can implement constraints in a
&lt;br&gt;functional programming language. &amp;nbsp;The language lacks multiprocessor
&lt;br&gt;support, but supports declarative programming, object-oriented
&lt;br&gt;programming, constraint programming, and concurrency as part of a
&lt;br&gt;coherent whole.
&lt;br&gt;&lt;br&gt;-- Benjamin L. Russell
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Haskell-Cafe mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18336638&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Haskell-Cafe@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/mailman/listinfo/haskell-cafe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/mailman/listinfo/haskell-cafe&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Haskell---Haskell-Cafe-f13132.html&quot; embed=&quot;fixTarget[13132]&quot; target=&quot;_top&quot; &gt;Haskell - Haskell-Cafe&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Interesting-feature-tp18311432p18336638.html" />
</entry>

</feed>
