<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments for The Comonad.Reader</title>
	<link>http://comonad.com/reader</link>
	<description>types, (co)monads, substructural logic</description>
	<pubDate>Fri,  5 Sep 2008 21:10:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>

	<item>
		<title>Comment on Linear Bloom Filters by Darrell Teague</title>
		<link>http://comonad.com/reader/2008/linear-bloom-filters/#comment-2378</link>
		<pubDate>Tue, 05 Aug 2008 19:02:05 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/linear-bloom-filters/#comment-2378</guid>
					<description>Your article was well-written and is very interesting. I was really geeking out on it and I am not even a mathematician. I think the article would have made my ex-girlfriend hot.

Anyway, all jokes aside, I am surprised to find Bloom Filter usage very sparse within the general software industry (I am a consultant-of-one running my own company but have large clients in the Fortune 100, start-ups, etc).

The case you presented here for being able to efficiently serialize the filter has notable use in web-application farm environments where sessions and other state table information must be migrated between servers (depending on session management strategy employed). Indeed one challenge I am considering is somehow managing some Bloom Filter construct across a RAIN architecture without sacrificing the small memory footprint and performance advantages that Blooms provide.

Thanks again.</description>
		<content:encoded><![CDATA[<p>Your article was well-written and is very interesting. I was really geeking out on it and I am not even a mathematician. I think the article would have made my ex-girlfriend hot.</p>
<p>Anyway, all jokes aside, I am surprised to find Bloom Filter usage very sparse within the general software industry (I am a consultant-of-one running my own company but have large clients in the Fortune 100, start-ups, etc).</p>
<p>The case you presented here for being able to efficiently serialize the filter has notable use in web-application farm environments where sessions and other state table information must be migrated between servers (depending on session management strategy employed). Indeed one challenge I am considering is somehow managing some Bloom Filter construct across a RAIN architecture without sacrificing the small memory footprint and performance advantages that Blooms provide.</p>
<p>Thanks again.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by Edward Kmett</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2129</link>
		<pubDate>Sat, 19 Jul 2008 18:40:30 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2129</guid>
					<description>Fixed.</description>
		<content:encoded><![CDATA[<p>Fixed.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by rwinston</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2126</link>
		<pubDate>Sat, 19 Jul 2008 14:01:12 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2126</guid>
					<description>Regarding the initial reverse example - is there a mistake? Should

reverse (a:as) = reverse as ++ [a]
reverse [] = reverse []

not be

reverse (a:as) = reverse as ++ [a]
reverse [] =  []

?</description>
		<content:encoded><![CDATA[<p>Regarding the initial reverse example - is there a mistake? Should</p>
<p>reverse (a:as) = reverse as ++ [a]<br />
reverse [] = reverse []</p>
<p>not be</p>
<p>reverse (a:as) = reverse as ++ [a]<br />
reverse [] =  []</p>
<p>?
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by sclv</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2104</link>
		<pubDate>Fri, 18 Jul 2008 01:09:06 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2104</guid>
					<description>This is a really good object lesson in careful profiling now though. :-)</description>
		<content:encoded><![CDATA[<p>This is a really good object lesson in careful profiling now though. :-)
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by Andy Gill</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2099</link>
		<pubDate>Thu, 17 Jul 2008 21:03:58 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2099</guid>
					<description>Nice writeup. Glad to see someone using worker/wrapper.</description>
		<content:encoded><![CDATA[<p>Nice writeup. Glad to see someone using worker/wrapper.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by Edward Kmett</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2092</link>
		<pubDate>Thu, 17 Jul 2008 12:05:36 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2092</guid>
					<description>apfelmus, mfp,

I concede that on paper both appear to be n log n in the average case. 

I sat down with mfp of eigenclass last night and we tried to figure out what was causing the curve in question.

[Edit: The perceived larger than constant-factor difference in the curves seems to have been caused by the trivial implementation starting to cause memory pressure before the other. Unfortunately my last couple of data points didn't cause this to happen to both implementations. After a set of sufficiently long term runs it is clear they both clearly have n log n behavior. The curse of seeing what you expect to see.]</description>
		<content:encoded><![CDATA[<p>apfelmus, mfp,</p>
<p>I concede that on paper both appear to be n log n in the average case. </p>
<p>I sat down with mfp of eigenclass last night and we tried to figure out what was causing the curve in question.</p>
<p>[Edit: The perceived larger than constant-factor difference in the curves seems to have been caused by the trivial implementation starting to cause memory pressure before the other. Unfortunately my last couple of data points didn&#8217;t cause this to happen to both implementations. After a set of sufficiently long term runs it is clear they both clearly have n log n behavior. The curse of seeing what you expect to see.]
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by apfelmus</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2089</link>
		<pubDate>Thu, 17 Jul 2008 09:39:17 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2089</guid>
					<description>The version with difference lists may be a bit faster, but both quicksorts are O(n * log n) on average.

Analysis: Let T(n) be the time it takes to sort a list with n elements. In the average case, ls and rs have half as many elements as xs, i.e. n/2. Sorting both needs 2*T(n/2) time. Partitioning and concatenation need O(n) time, hence we have

    T(n) = 2*T(n/2) + O(n)

which means T(n) = O(n * log n).</description>
		<content:encoded><![CDATA[<p>The version with difference lists may be a bit faster, but both quicksorts are O(n * log n) on average.</p>
<p>Analysis: Let T(n) be the time it takes to sort a list with n elements. In the average case, ls and rs have half as many elements as xs, i.e. n/2. Sorting both needs 2*T(n/2) time. Partitioning and concatenation need O(n) time, hence we have</p>
<p>    T(n) = 2*T(n/2) + O(n)</p>
<p>which means T(n) = O(n * log n).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by Edward Kmett</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2084</link>
		<pubDate>Thu, 17 Jul 2008 03:16:12 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2084</guid>
					<description>BMeph, I actually switched to that and then back while writing the post. =)</description>
		<content:encoded><![CDATA[<p>BMeph, I actually switched to that and then back while writing the post. =)
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by BMeph</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2083</link>
		<pubDate>Thu, 17 Jul 2008 02:29:47 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2083</guid>
					<description>Also reads.

On another note, Edward: you could have catered to your odd blog environment with:

(rs,ls) = partition (&#62;a) as

but, it might've confused someone.

Still waiting for the tarball of your Comonad/Bifunctor blogs... ;)</description>
		<content:encoded><![CDATA[<p>Also reads.</p>
<p>On another note, Edward: you could have catered to your odd blog environment with:</p>
<p>(rs,ls) = partition (&gt;a) as</p>
<p>but, it might&#8217;ve confused someone.</p>
<p>Still waiting for the tarball of your Comonad/Bifunctor blogs&#8230; ;)
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on A Sort of Difference by Mauricio Fernandez</title>
		<link>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2081</link>
		<pubDate>Thu, 17 Jul 2008 00:37:07 +0000</pubDate>
		<guid>http://comonad.com/reader/2008/a-sort-of-difference/#comment-2081</guid>
					<description>Let me reverse your reversal with reverse. Assuming a strict semantics, and analyzing the function the same way I did for qsort, 

C(n) = C(n-1) + n - 1 + 1

which is clearly O(n^2). The "reverse" example thus fails to show anything regarding the cons analysis of qsort. Do you have a real counterexample showing that  the analysis under a strict semantics doesn't work as an upper bound for the non-strict case?</description>
		<content:encoded><![CDATA[<p>Let me reverse your reversal with reverse. Assuming a strict semantics, and analyzing the function the same way I did for qsort, </p>
<p>C(n) = C(n-1) + n - 1 + 1</p>
<p>which is clearly O(n^2). The &#8220;reverse&#8221; example thus fails to show anything regarding the cons analysis of qsort. Do you have a real counterexample showing that  the analysis under a strict semantics doesn&#8217;t work as an upper bound for the non-strict case?
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
