<?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/"
		>
<channel>
	<title>Comments for The Comonad.Reader</title>
	<atom:link href="http://comonad.com/reader/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://comonad.com/reader</link>
	<description>types, (co)monads, substructural logic</description>
	<lastBuildDate>Fri, 27 Apr 2012 05:01:00 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Free Monads for Less (Part 2 of 3): Yoneda by Philip J-F</title>
		<link>http://comonad.com/reader/2011/free-monads-for-less-2/comment-page-1/#comment-104638</link>
		<dc:creator>Philip J-F</dc:creator>
		<pubDate>Fri, 27 Apr 2012 05:01:00 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=243#comment-104638</guid>
		<description>shouldn&#039;t the type of improve  be 

Functor f =&gt; (forall m. MonadFree f m =&gt; m a) -&gt; Free f a

instead of  

(forall a. MonadFree f m =&gt; m a) -&gt; Free f a</description>
		<content:encoded><![CDATA[<p>shouldn&#8217;t the type of improve  be </p>
<p>Functor f =&gt; (forall m. MonadFree f m =&gt; m a) -&gt; Free f a</p>
<p>instead of  </p>
<p>(forall a. MonadFree f m =&gt; m a) -&gt; Free f a</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Cofree Comonad and the Expression Problem by Richard Wallace</title>
		<link>http://comonad.com/reader/2008/the-cofree-comonad-and-the-expression-problem/comment-page-1/#comment-104596</link>
		<dc:creator>Richard Wallace</dc:creator>
		<pubDate>Tue, 24 Apr 2012 01:11:23 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/2008/the-cofree-comonad-and-the-expression-problem/#comment-104596</guid>
		<description>I&#039;ve really enjoyed studying and trying to understand this, but one thing has still got me hung up that I just can&#039;t seem to get past.

I&#039;ve been trying, as an exercise, to get the addition example from Swierstra’s paper working in terms of Free and Cofree.  I translated Expr to Free successfully and am able to right an eval function 

eval :: (Eval f, Functor f) =&gt; Free f Int -&gt; Int

that works using cataFree.  I&#039;ve also taken the next step and eliminated the Eval type-class and written runArith and runVal functions that I can then compose in the way outlined in the comment above.

But I just can&#039;t seem to take that mental leap to translate it using Cofree.  I think my problem is in determining what the dual of Addition and Val should be.

An example of that would be greatly appreciated and hopefully shine light the last bits that are still eluding me.

Thanks.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve really enjoyed studying and trying to understand this, but one thing has still got me hung up that I just can&#8217;t seem to get past.</p>
<p>I&#8217;ve been trying, as an exercise, to get the addition example from Swierstra’s paper working in terms of Free and Cofree.  I translated Expr to Free successfully and am able to right an eval function </p>
<p>eval :: (Eval f, Functor f) =&gt; Free f Int -&gt; Int</p>
<p>that works using cataFree.  I&#8217;ve also taken the next step and eliminated the Eval type-class and written runArith and runVal functions that I can then compose in the way outlined in the comment above.</p>
<p>But I just can&#8217;t seem to take that mental leap to translate it using Cofree.  I think my problem is in determining what the dual of Addition and Val should be.</p>
<p>An example of that would be greatly appreciated and hopefully shine light the last bits that are still eluding me.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Wadler&#8217;s Law Revisited by sclv</title>
		<link>http://comonad.com/reader/2012/wadlers-law-revisited/comment-page-1/#comment-104342</link>
		<dc:creator>sclv</dc:creator>
		<pubDate>Wed, 04 Apr 2012 17:19:41 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=571#comment-104342</guid>
		<description>The module system is an easy fix by comparison! (w/r/t nested modules only that is... once we get into ML/functors territory the can of worms/gate to hellmouth starts to open up.)</description>
		<content:encoded><![CDATA[<p>The module system is an easy fix by comparison! (w/r/t nested modules only that is&#8230; once we get into ML/functors territory the can of worms/gate to hellmouth starts to open up.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Wadler&#8217;s Law Revisited by Edward Kmett</title>
		<link>http://comonad.com/reader/2012/wadlers-law-revisited/comment-page-1/#comment-104329</link>
		<dc:creator>Edward Kmett</dc:creator>
		<pubDate>Wed, 04 Apr 2012 05:34:34 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=571#comment-104329</guid>
		<description>Pseudonym: Of course. :D In general the &#039;strong record conjecture&#039; can be viewed of as just a version of wadler&#039;s original law, with a subset of the semantics separated out, since if you factor out the 2^4 factor, it IS the same law (modulo comments), but you could go back to the original 1992 version of the law, and ... finish killing the joke completely.</description>
		<content:encoded><![CDATA[<p>Pseudonym: Of course. :D In general the &#8217;strong record conjecture&#8217; can be viewed of as just a version of wadler&#8217;s original law, with a subset of the semantics separated out, since if you factor out the 2^4 factor, it IS the same law (modulo comments), but you could go back to the original 1992 version of the law, and &#8230; finish killing the joke completely.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Wadler&#8217;s Law Revisited by Pseudonym</title>
		<link>http://comonad.com/reader/2012/wadlers-law-revisited/comment-page-1/#comment-104328</link>
		<dc:creator>Pseudonym</dc:creator>
		<pubDate>Wed, 04 Apr 2012 05:02:53 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=571#comment-104328</guid>
		<description>Both record conjectures are incorrect in the sense that Wadler&#039;s Law is, because Wadler&#039;s Law applies to &lt;i&gt;all&lt;/i&gt; language designs, not just ones with an existing record design which doesn&#039;t do the job.

If you extrapolated from only C++ discussions to all language design discussions, this would be called the Weak Concept Conjecture instead.

I have a suspicion that every programming language has a missing but highly desirable feature, or existing but broken realisation of said feature, that everyone would like fixed, but most obvious ways to fix it would have nontrivial interactions with existing features or libraries and/or break a lot of existing code.

BTW, if you think the Haskell records discussion is bad, you wait until someone bites the bullet on the module system.</description>
		<content:encoded><![CDATA[<p>Both record conjectures are incorrect in the sense that Wadler&#8217;s Law is, because Wadler&#8217;s Law applies to <i>all</i> language designs, not just ones with an existing record design which doesn&#8217;t do the job.</p>
<p>If you extrapolated from only C++ discussions to all language design discussions, this would be called the Weak Concept Conjecture instead.</p>
<p>I have a suspicion that every programming language has a missing but highly desirable feature, or existing but broken realisation of said feature, that everyone would like fixed, but most obvious ways to fix it would have nontrivial interactions with existing features or libraries and/or break a lot of existing code.</p>
<p>BTW, if you think the Haskell records discussion is bad, you wait until someone bites the bullet on the module system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on What Constraints Entail: Part 2 by Philip J-F</title>
		<link>http://comonad.com/reader/2011/what-constraints-entail-part-2/comment-page-1/#comment-103013</link>
		<dc:creator>Philip J-F</dc:creator>
		<pubDate>Thu, 01 Mar 2012 07:04:59 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=461#comment-103013</guid>
		<description>Inspired by this discussion I wrote a post showing how to get multiple, passable, effectively first-class, instances.  I borrowed your applicative example: http://joyoftypes.blogspot.com/2012/02/haskell-supports-first-class-instances.html</description>
		<content:encoded><![CDATA[<p>Inspired by this discussion I wrote a post showing how to get multiple, passable, effectively first-class, instances.  I borrowed your applicative example: <a href="http://joyoftypes.blogspot.com/2012/02/haskell-supports-first-class-instances.html" rel="nofollow">http://joyoftypes.blogspot.com/2012/02/haskell-supports-first-class-instances.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Searching Infinity Parametrically by Ryan Ingram</title>
		<link>http://comonad.com/reader/2011/searching-infinity/comment-page-1/#comment-101855</link>
		<dc:creator>Ryan Ingram</dc:creator>
		<pubDate>Wed, 22 Feb 2012 23:43:08 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=510#comment-101855</guid>
		<description>Hm, I changed my mind.  effectify requires you to order all the calls inside the otherwise pure f, which violates referential transparency; in (\k :: (String-&gt;Int) -&gt; k &quot;a&quot; + k &quot;b&quot;) (with strict (+)), the compiler is allowed to choose whether it wants to evaluate k &quot;a&quot; or k &quot;b&quot; first, while in the effectful version the caller needs to explicitly make that decision.</description>
		<content:encoded><![CDATA[<p>Hm, I changed my mind.  effectify requires you to order all the calls inside the otherwise pure f, which violates referential transparency; in (\k :: (String-&gt;Int) -&gt; k &#8220;a&#8221; + k &#8220;b&#8221;) (with strict (+)), the compiler is allowed to choose whether it wants to evaluate k &#8220;a&#8221; or k &#8220;b&#8221; first, while in the effectful version the caller needs to explicitly make that decision.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Searching Infinity Parametrically by Ryan Ingram</title>
		<link>http://comonad.com/reader/2011/searching-infinity/comment-page-1/#comment-101849</link>
		<dc:creator>Ryan Ingram</dc:creator>
		<pubDate>Wed, 22 Feb 2012 23:02:20 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/?p=510#comment-101849</guid>
		<description>One thing that&#039;s interesting to me is the transformation from

   type Pure a b c = (a -&gt; b) -&gt; c

to

   type Effect a b c = forall f. Monad f =&gt; (a -&gt; f b) -&gt; f c

Clearly f_effect is pure; you can get f_pure from f_effect by specializing f to the identity monad:

   purify :: Effect a b c -&gt; Pure a b c
   purify f ab = runIdentity $ f $ \a -&gt; Identity $ ab a

But it seems to me that no unsoundness is introduced by allowing this isomorphism in the other direction as well, although I don&#039;t think that&#039;s implementable in Haskell.

   effectify :: Pure a b c -&gt; Effect a b c
   effectify f = ???</description>
		<content:encoded><![CDATA[<p>One thing that&#8217;s interesting to me is the transformation from</p>
<p>   type Pure a b c = (a -&gt; b) -&gt; c</p>
<p>to</p>
<p>   type Effect a b c = forall f. Monad f =&gt; (a -&gt; f b) -&gt; f c</p>
<p>Clearly f_effect is pure; you can get f_pure from f_effect by specializing f to the identity monad:</p>
<p>   purify :: Effect a b c -&gt; Pure a b c<br />
   purify f ab = runIdentity $ f $ \a -&gt; Identity $ ab a</p>
<p>But it seems to me that no unsoundness is introduced by allowing this isomorphism in the other direction as well, although I don&#8217;t think that&#8217;s implementable in Haskell.</p>
<p>   effectify :: Pure a b c -&gt; Effect a b c<br />
   effectify f = ???</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Zipping and Unzipping Functors by anonymous</title>
		<link>http://comonad.com/reader/2008/zipping-and-unzipping-functors/comment-page-1/#comment-101831</link>
		<dc:creator>anonymous</dc:creator>
		<pubDate>Wed, 22 Feb 2012 20:29:32 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/2008/zipping-and-unzipping-functors/#comment-101831</guid>
		<description>I also want liftPair in Applicative</description>
		<content:encoded><![CDATA[<p>I also want liftPair in Applicative</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Pointed-Set Comonad by anonymous</title>
		<link>http://comonad.com/reader/2008/the-pointed-set-comonad/comment-page-1/#comment-101828</link>
		<dc:creator>anonymous</dc:creator>
		<pubDate>Wed, 22 Feb 2012 20:02:18 +0000</pubDate>
		<guid isPermaLink="false">http://comonad.com/reader/2008/the-pointed-set-comonad/#comment-101828</guid>
		<description>Anything with mzero (or empty) cannot be a comonad, as far as I can tell; extract and mzero are mutually exclusive.</description>
		<content:encoded><![CDATA[<p>Anything with mzero (or empty) cannot be a comonad, as far as I can tell; extract and mzero are mutually exclusive.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

