<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Melding Monads</title>
	<atom:link href="http://blog.melding-monads.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.melding-monads.com</link>
	<description>Math, Computer Science,  and Education</description>
	<lastBuildDate>Wed, 08 May 2013 14:59:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on Announcing postgresql-simple 0.3.1 by Luke Hoersten</title>
		<link>http://blog.melding-monads.com/2013/04/27/announcing-postgresql-simple-0-3-1/#comment-294</link>
		<dc:creator><![CDATA[Luke Hoersten]]></dc:creator>
		<pubDate>Wed, 08 May 2013 14:59:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=503#comment-294</guid>
		<description><![CDATA[I&#039;m really excited about these changes. Has anyone attempted to port the Snap Framework snaplets yet? It sounds like it may be as simple as bumping the cabal dep. nicely done.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m really excited about these changes. Has anyone attempted to port the Snap Framework snaplets yet? It sounds like it may be as simple as bumping the cabal dep. nicely done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing postgresql-simple 0.3.1 by dp wiz (@dpwiz)</title>
		<link>http://blog.melding-monads.com/2013/04/27/announcing-postgresql-simple-0-3-1/#comment-290</link>
		<dc:creator><![CDATA[dp wiz (@dpwiz)]]></dc:creator>
		<pubDate>Sat, 27 Apr 2013 20:09:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=503#comment-290</guid>
		<description><![CDATA[That&#039;s a really awesome work done here. Congratulations on release!]]></description>
		<content:encoded><![CDATA[<p>That&#8217;s a really awesome work done here. Congratulations on release!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing postgresql-simple 0.1 by Announcing postgresql-simple 0.3.1 &#124; Melding Monads</title>
		<link>http://blog.melding-monads.com/2012/05/05/announcing-postgresql-simple-0-1/#comment-289</link>
		<dc:creator><![CDATA[Announcing postgresql-simple 0.3.1 &#124; Melding Monads]]></dc:creator>
		<pubDate>Sat, 27 Apr 2013 15:49:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=471#comment-289</guid>
		<description><![CDATA[[...] has been progressing since my last announcement of version 0.1 nearly a year ago. Since then there has been many changes by myself and contributors, some of which [...]]]></description>
		<content:encoded><![CDATA[<p>[...] has been progressing since my last announcement of version 0.1 nearly a year ago. Since then there has been many changes by myself and contributors, some of which [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Polynomial multiplication by lpsmith</title>
		<link>http://blog.melding-monads.com/2009/04/07/polynomial-multiplication/#comment-271</link>
		<dc:creator><![CDATA[lpsmith]]></dc:creator>
		<pubDate>Sat, 04 Aug 2012 13:25:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=43#comment-271</guid>
		<description><![CDATA[Good catch!]]></description>
		<content:encoded><![CDATA[<p>Good catch!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Polynomial multiplication by Jon Shapcott</title>
		<link>http://blog.melding-monads.com/2009/04/07/polynomial-multiplication/#comment-270</link>
		<dc:creator><![CDATA[Jon Shapcott]]></dc:creator>
		<pubDate>Sat, 04 Aug 2012 02:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=43#comment-270</guid>
		<description><![CDATA[This post is a bit old now, but here goes anyway...

The definition for &quot;sub&quot; does not work. The coefficients in the monomials left over at the end of the recursion, and those in the LT and GT branches need to be negated in order to get polynomial subtraction.

You can define sub properly with &quot;sub x = add x . map (\(M c k) -&gt; M (negate c) k)&quot;. But if you do that, you might as well replace make &quot;mergeBy&quot;  be the addition function, using the &quot;+&quot; operator instead of the merging function parameter.]]></description>
		<content:encoded><![CDATA[<p>This post is a bit old now, but here goes anyway&#8230;</p>
<p>The definition for &#8220;sub&#8221; does not work. The coefficients in the monomials left over at the end of the recursion, and those in the LT and GT branches need to be negated in order to get polynomial subtraction.</p>
<p>You can define sub properly with &#8220;sub x = add x . map (\(M c k) -&gt; M (negate c) k)&#8221;. But if you do that, you might as well replace make &#8220;mergeBy&#8221;  be the addition function, using the &#8220;+&#8221; operator instead of the merging function parameter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing split-channel by lpsmith</title>
		<link>http://blog.melding-monads.com/2012/07/10/announcing-split-channel/#comment-259</link>
		<dc:creator><![CDATA[lpsmith]]></dc:creator>
		<pubDate>Thu, 19 Jul 2012 18:34:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=491#comment-259</guid>
		<description><![CDATA[Yeah,  I&#039;m not too surprised that GHC manages to optimize Chan&#039;s ReceivePort away in this simple benchmark.   And it may well do so in more realistic use cases too.  You may find it enlightening to study GHC&#039;s core output,  and probe some of the limitations of the set of optimizations that accomplishes this.]]></description>
		<content:encoded><![CDATA[<p>Yeah,  I&#8217;m not too surprised that GHC manages to optimize Chan&#8217;s ReceivePort away in this simple benchmark.   And it may well do so in more realistic use cases too.  You may find it enlightening to study GHC&#8217;s core output,  and probe some of the limitations of the set of optimizations that accomplishes this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing split-channel by jberryman</title>
		<link>http://blog.melding-monads.com/2012/07/10/announcing-split-channel/#comment-258</link>
		<dc:creator><![CDATA[jberryman]]></dc:creator>
		<pubDate>Thu, 19 Jul 2012 13:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=491#comment-258</guid>
		<description><![CDATA[Right, I think the relevant optimization is just inlining/unfolding where the compiler sees it doesn&#039;t have to rebox the two MVars in the Chan constructor, but I&#039;m not sure.

The code I used was (sorry if this doesn&#039;t get formatted correctly):

&lt;pre&gt;
module Main
    where

import Control.Concurrent.Chan
import Control.Concurrent.Chan.Split

main = main1

payload :: [Integer]
payload = [1000000000000000.. 1000000010000000]

-- test traditional Chan implementation:
main0 = do
    putStrLn &quot;Starting to write&quot;
    s &lt;- newChan
    mapM_ (writeChan s) payload
    putStrLn &quot;Done&quot;

main1 = do
    putStrLn &quot;Starting to write&quot;
    s &lt;- newSendPort
    mapM_ (send s) payload
    putStrLn &quot;Done&quot;
&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<p>Right, I think the relevant optimization is just inlining/unfolding where the compiler sees it doesn&#8217;t have to rebox the two MVars in the Chan constructor, but I&#8217;m not sure.</p>
<p>The code I used was (sorry if this doesn&#8217;t get formatted correctly):</p>
<pre>
module Main
    where

import Control.Concurrent.Chan
import Control.Concurrent.Chan.Split

main = main1

payload :: [Integer]
payload = [1000000000000000.. 1000000010000000]

-- test traditional Chan implementation:
main0 = do
    putStrLn "Starting to write"
    s &lt;- newChan
    mapM_ (writeChan s) payload
    putStrLn &quot;Done&quot;

main1 = do
    putStrLn &quot;Starting to write&quot;
    s &lt;- newSendPort
    mapM_ (send s) payload
    putStrLn &quot;Done&quot;
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing split-channel by lpsmith</title>
		<link>http://blog.melding-monads.com/2012/07/10/announcing-split-channel/#comment-256</link>
		<dc:creator><![CDATA[lpsmith]]></dc:creator>
		<pubDate>Thu, 19 Jul 2012 05:26:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=491#comment-256</guid>
		<description><![CDATA[[Re:   jberryman&#039;s question about  GC benchmarks]

No, I haven&#039;t benchmarked.   I find that surprising,  but only a little bit.  (I&#039;m not surprised by being surprised at GHC optimizations.)    It&#039;s probably better to not rely on this particular optimization though,  unless it&#039;s a particularly well-understood and reliable optimization.  I would expect it to be relatively easy to come up with use cases where the optimization doesn&#039;t kick in,  for reasons that may be less than immediately obvious.    

I&#039;m very interested in seeing your benchmark, though.]]></description>
		<content:encoded><![CDATA[<p>[Re:   jberryman's question about  GC benchmarks]</p>
<p>No, I haven&#8217;t benchmarked.   I find that surprising,  but only a little bit.  (I&#8217;m not surprised by being surprised at GHC optimizations.)    It&#8217;s probably better to not rely on this particular optimization though,  unless it&#8217;s a particularly well-understood and reliable optimization.  I would expect it to be relatively easy to come up with use cases where the optimization doesn&#8217;t kick in,  for reasons that may be less than immediately obvious.    </p>
<p>I&#8217;m very interested in seeing your benchmark, though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing split-channel by jberryman</title>
		<link>http://blog.melding-monads.com/2012/07/10/announcing-split-channel/#comment-255</link>
		<dc:creator><![CDATA[jberryman]]></dc:creator>
		<pubDate>Wed, 18 Jul 2012 23:34:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=491#comment-255</guid>
		<description><![CDATA[Do you have any benchmarks that you&#039;re using to measure GC behavior vs Chan? In all of my simple tests of vanilla Chan (on GHC 7.4.1), unless optimizations are turned completely off, messages are successfully garbage collected as we write, when there are no more readers (i.e. no more references to the fst / read side of the Chan).

I certainly see the benefit to making it easier for the GC to do its duties, but I&#039;m wondering if there are any cases where you&#039;ve seen your implementation have better behavior then straight Chan with optimizations on.]]></description>
		<content:encoded><![CDATA[<p>Do you have any benchmarks that you&#8217;re using to measure GC behavior vs Chan? In all of my simple tests of vanilla Chan (on GHC 7.4.1), unless optimizations are turned completely off, messages are successfully garbage collected as we write, when there are no more readers (i.e. no more references to the fst / read side of the Chan).</p>
<p>I certainly see the benefit to making it easier for the GC to do its duties, but I&#8217;m wondering if there are any cases where you&#8217;ve seen your implementation have better behavior then straight Chan with optimizations on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Announcing split-channel by jberryman</title>
		<link>http://blog.melding-monads.com/2012/07/10/announcing-split-channel/#comment-248</link>
		<dc:creator><![CDATA[jberryman]]></dc:creator>
		<pubDate>Sat, 14 Jul 2012 20:27:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.melding-monads.com/?p=491#comment-248</guid>
		<description><![CDATA[Ah, I think I was confusing things. I&#039;ll have to take some time to wrap my bony head around the details and might steal your approach for my own library.]]></description>
		<content:encoded><![CDATA[<p>Ah, I think I was confusing things. I&#8217;ll have to take some time to wrap my bony head around the details and might steal your approach for my own library.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
