<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-11295132.post865972317776443412..comments</id><updated>2011-08-07T06:29:30.633-07:00</updated><category term='category theory'/><category term='lawvere theories'/><category term='astronomy'/><category term='optimisation'/><category term='self-reference'/><category term='comonads'/><category term='haskell'/><category term='programming'/><category term='monad'/><category term='mathematics'/><category term='physics'/><category term='probability'/><category term='types'/><category term='quantum'/><title type='text'>Comments on A Neighborhood of Infinity: Profunctors in Haskell</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.sigfpe.com/feeds/865972317776443412/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html'/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11295132.post-2137302044288894422</id><published>2011-08-06T21:52:11.397-07:00</published><updated>2011-08-06T21:52:11.397-07:00</updated><title type='text'>We should have lunch!  I&amp;#39;ll grab a spot on you...</title><content type='html'>We should have lunch!  I&amp;#39;ll grab a spot on your calendar.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2137302044288894422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2137302044288894422'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312692731397#c2137302044288894422' title=''/><author><name>Mike Stay</name><uri>http://www.blogger.com/profile/03408641732412584050</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-981920343'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-1039379141074578851</id><published>2011-08-06T06:40:42.029-07:00</published><updated>2011-08-06T06:40:42.029-07:00</updated><title type='text'>Hi @Mike!

(Via an indirect path) it was your post...</title><content type='html'>Hi @Mike!&lt;br /&gt;&lt;br /&gt;(Via an indirect path) it was your post that prompted me to write this.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1039379141074578851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1039379141074578851'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312638042029#c1039379141074578851' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-2104574420098134107</id><published>2011-08-05T16:37:05.202-07:00</published><updated>2011-08-05T16:37:05.202-07:00</updated><title type='text'>I&amp;#39;ve updated my blogger profile.</title><content type='html'>I&amp;#39;ve updated my blogger profile.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2104574420098134107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2104574420098134107'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312587425202#c2104574420098134107' title=''/><author><name>Mike Stay</name><uri>http://www.blogger.com/profile/03408641732412584050</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-981920343'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-2392343608124186667</id><published>2011-08-05T16:35:19.525-07:00</published><updated>2011-08-05T16:35:19.525-07:00</updated><title type='text'>No, Mike Stay, John Baez&amp;#39; student.  I wrote th...</title><content type='html'>No, Mike Stay, John Baez&amp;#39; student.  I wrote the Rosetta stone paper with him and I&amp;#39;m almost done with a paper on compact closed bicategories.  That&amp;#39;s why I was asking about how Haskell dealt with the trace on the Google Haskell list :)&lt;br /&gt;&lt;br /&gt;Here are some examples from my paper:&lt;br /&gt;&lt;br /&gt;If you take a monad in Rel, you get a preorder:&lt;br /&gt;- A relation H from a set O to itself&lt;br /&gt;- An implication xHHy -&amp;gt; xHy, i.e. transitivity&lt;br /&gt;- An implication T -&amp;gt; xHx, i.e. reflexivity.&lt;br /&gt;&lt;br /&gt;If you take a monad in Span(Set), you get a small category:&lt;br /&gt;- A span of sets O &amp;lt;-src- M -tgt-&amp;gt; O that maps morphisms to their source &amp;amp; target object&lt;br /&gt;- A map of spans involving a function from M x_O M -&amp;gt; M, where M x_O M is the set of composable pairs of morphisms&lt;br /&gt;- A map of spans involving a function from O to M picking out the identity.&lt;br /&gt;&lt;br /&gt;If you take a (symmetric monoidal) monad in Prof, you get an Arrow:&lt;br /&gt;- A profunctor A that assigns to any two types the set of abstract programs between them&lt;br /&gt;- A natural transformation AA -&amp;gt; A for composition of abstract programs&lt;br /&gt;- A natural transformation 1-&amp;gt;A for &amp;quot;lifting&amp;quot;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2392343608124186667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2392343608124186667'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312587319525#c2392343608124186667' title=''/><author><name>mike</name><uri>http://www.blogger.com/profile/03408641732412584050</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-981920343'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-3543385371932356883</id><published>2011-08-05T16:18:48.238-07:00</published><updated>2011-08-05T16:18:48.238-07:00</updated><title type='text'>Hey @mike,

Are you Mike Shulman?</title><content type='html'>Hey @mike,&lt;br /&gt;&lt;br /&gt;Are you Mike Shulman?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/3543385371932356883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/3543385371932356883'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312586328238#c3543385371932356883' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-5728334885153904951</id><published>2011-08-05T16:15:31.719-07:00</published><updated>2011-08-05T16:15:31.719-07:00</updated><title type='text'>Oops, I got the objects of Mat(R) wrong.  Objects ...</title><content type='html'>Oops, I got the objects of Mat(R) wrong.  Objects are natural numbers; morphisms are Ob(R)-valued matrices and 2-morphisms are Mor(R)-valued matrices.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/5728334885153904951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/5728334885153904951'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312586131719#c5728334885153904951' title=''/><author><name>mike</name><uri>http://www.blogger.com/profile/03408641732412584050</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-981920343'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-904939093425693226</id><published>2011-08-05T16:00:53.005-07:00</published><updated>2011-08-05T16:00:53.005-07:00</updated><title type='text'>Hi.  Profunctors are one way to categorify linear ...</title><content type='html'>Hi.  Profunctors are one way to categorify linear algebra, so you&amp;#39;ll get lots of similar constructions.  The bicategory Prof is compact closed, where the &amp;quot;opposite&amp;quot; functor is the dual; upstar and downstar are currying and uncurrying.&lt;br /&gt;&lt;br /&gt;Some other compact closed bicategories are Rel, with sets, relations, and implications; Span(Set), with sets, spans, and maps of spans; Prof and its equivalent 2-category Cocont of presheaf categories, cocontinuous functors, and natural transformations; nCob_2, whose objects are (n-2)-dimensional manifolds, morphisms are (n-1)-dimensional manifolds with boundary, and 2-morphisms are n-dimensional manifolds with corners; and Mat(R) where R is any rig category (it&amp;#39;s symmetric monoidal under ⊕, monoidal under ⊗, and ⊗ distributes up to isomorphism over ⊕; Set is the principle example with product &amp;amp; coproduct), whose objects are objects of R, morphisms are Ob(R)-valued matrices, and 2-morphisms are Mor(R)-valued matrices.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/904939093425693226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/904939093425693226'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312585253005#c904939093425693226' title=''/><author><name>mike</name><uri>http://www.blogger.com/profile/03408641732412584050</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-981920343'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8206426252249732743</id><published>2011-08-04T04:58:09.193-07:00</published><updated>2011-08-04T04:58:09.193-07:00</updated><title type='text'>The bifunctor seems more general. I&amp;#39;ve noticed...</title><content type='html'>The bifunctor seems more general. I&amp;#39;ve noticed &amp;#39;lmap&amp;#39; appears to work in reverse, compared to &amp;#39;first&amp;#39; and it just occured to me as a result of that you wouldn&amp;#39;t be able to create an instance of Bifunctor from Profunctor as Bifunctor requires both PFunctor and QFunctor to be parameterized over the same type, p, but I don&amp;#39;t think I understand the implications of that.&lt;br /&gt;It seems that PFunctor and QFunctor can be easily derived from a Profunctor however.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;newtype a :&amp;lt;- b = W { unW :: b -&amp;gt; a }&lt;br /&gt;&lt;br /&gt;instance Category (:&amp;lt;-) where&lt;br /&gt;    id    = W Prelude.id&lt;br /&gt;    f . g = W (unW g . unW f)&lt;br /&gt;&lt;br /&gt;instance Profunctor h =&amp;gt; PFunctor h (:&amp;lt;-) (-&amp;gt;) where first = lmap . unW&lt;br /&gt;&lt;br /&gt;instance Profunctor h =&amp;gt; QFunctor h (-&amp;gt;) (-&amp;gt;) where second = rmap&lt;br /&gt;&lt;/i&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8206426252249732743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8206426252249732743'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1312459089193#c8206426252249732743' title=''/><author><name>Ivan Tomac</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-546765369'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-4485175190482596324</id><published>2011-07-28T10:18:12.245-07:00</published><updated>2011-07-28T10:18:12.245-07:00</updated><title type='text'>@Ivan Bifunctors are actually different. They are ...</title><content type='html'>@Ivan Bifunctors are actually different. They are functorial in both their arguments, and unlike Profunctors, they don&amp;#39;t necessarily map back down to the &amp;quot;base&amp;quot; category, in this case Set.&lt;br /&gt;&lt;br /&gt;But...Ed has now uploaded a profunctors package.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/4485175190482596324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/4485175190482596324'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311873492245#c4485175190482596324' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-1889122257098265224</id><published>2011-07-25T18:00:59.039-07:00</published><updated>2011-07-25T18:00:59.039-07:00</updated><title type='text'>This naming thing is annoying. I searched Ed&amp;#39;s...</title><content type='html'>This naming thing is annoying. I searched Ed&amp;#39;s package looking for profunctors and of course failed to find them.&lt;br /&gt;&lt;br /&gt;I find the name &amp;#39;distributor&amp;#39; suggestive. You can reproduce some trivial results from functional analysis using them (eg. (-&amp;gt;) is the Dirac delta) but I haven&amp;#39;t thought of ways to do more ambitious functional analysis type things.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1889122257098265224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1889122257098265224'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311642059039#c1889122257098265224' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-1299744236165726679</id><published>2011-07-25T17:52:38.341-07:00</published><updated>2011-07-25T17:52:38.341-07:00</updated><title type='text'>Just thought I&amp;#39;d mention the categories packag...</title><content type='html'>Just thought I&amp;#39;d mention the categories package by Edward Kmett implements this a bit more generally under the name bifunctor.&lt;br /&gt;The relation to arrows is also made obvious by calling lmap first and rmap second.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1299744236165726679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/1299744236165726679'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311641558341#c1299744236165726679' title=''/><author><name>Ivan Tomac</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1913111125'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-4923784522142995362</id><published>2011-07-25T15:06:20.266-07:00</published><updated>2011-07-25T15:06:20.266-07:00</updated><title type='text'>Profunctors is but one of many names for this conc...</title><content type='html'>Profunctors is but one of many names for this concept.  Two others are: distributors and C-D-bimodules.  Emily Riehl&amp;#39;s cute &lt;a href="http://math.uchicago.edu/~eriehl/cat/weighted.pdf" rel="nofollow"&gt;paper&lt;/a&gt; on weighted (co)limits uses them to good effect.  Another nice application of profunctors is the theory of generalized species as described, e.g., &lt;a href="www.cs.le.ac.uk/people/ngambino/Publications/generalised-species.pdf" rel="nofollow"&gt;here&lt;/a&gt;.  (Composition of profunctors can be expressed through a left Kan extension, but I find the definition using coends more transparent.  Either follows readily by thinking in analogy to set-theoretic relations though.)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/4923784522142995362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/4923784522142995362'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311631580266#c4923784522142995362' title=''/><author><name>Derek Elkins</name><uri>http://www.blogger.com/profile/13447153951050085981</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-678106234'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-2433243542483788324</id><published>2011-07-25T13:44:20.834-07:00</published><updated>2011-07-25T13:44:20.834-07:00</updated><title type='text'>In plain category theory, you can have a (co)end o...</title><content type='html'>In plain category theory, you can have a (co)end of any functor with a type of the form &amp;#39;C^op x C -&amp;gt; D&amp;#39;. D needn&amp;#39;t be symmetric monoidal; just a category. You can also have dinatural transformations between functors of this form. But you cannot have a dinatural transformation for profunctors of the form &amp;#39;D^op x C -&amp;gt; Set&amp;#39; unless C = D.&lt;br /&gt;&lt;br /&gt;There apparently is a notion of a (co)end of functors &amp;#39;C^op x C -&amp;gt; V&amp;#39;, with C enriched in V and V symmetric monoidal. But enriched category theory then has (co)ends &amp;#39;C^op x C -&amp;gt; D&amp;#39; for C and D arbitrary V-enriched categories as well.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2433243542483788324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/2433243542483788324'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311626660834#c2433243542483788324' title=''/><author><name>Dan Doel</name><uri>http://www.blogger.com/profile/16761291400347369301</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2040394147'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-3973689402648626116</id><published>2011-07-24T06:42:46.084-07:00</published><updated>2011-07-24T06:42:46.084-07:00</updated><title type='text'>1. I&amp;#39;ve only ever seen profunctors mapping int...</title><content type='html'>1. I&amp;#39;ve only ever seen profunctors mapping into Set. I&amp;#39;m guessing that for V-categories you map into V because you want Hom(_,_) (aka. (-&amp;gt;)) to be a profunctor.&lt;br /&gt;&lt;br /&gt;2. Profunctors have different categories but coends restrict to the same category. Coends sort of contract out a repeated index so I&amp;#39;d expect the same category to appear twice.&lt;br /&gt;&lt;br /&gt;As my discussion is restricted to Hask, I&amp;#39;m always composing profunctors with matching categories, which means they can be composed with coends. In the more general case I think you need Kan extensions. But I haven&amp;#39;t thought much about those (for the simple reason you often don&amp;#39;t need them when reasoning about Haskell).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/3973689402648626116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/3973689402648626116'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311514966084#c3973689402648626116' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8413732021924842887</id><published>2011-07-24T01:45:52.624-07:00</published><updated>2011-07-24T01:45:52.624-07:00</updated><title type='text'>So, I have a two-part question about the generalit...</title><content type='html'>So, I have a two-part question about the generalities between profunctors and coends.&lt;br /&gt;&lt;br /&gt;First: in the definition of profunctors you give here you restrict to mapping into &lt;b&gt;Set&lt;/b&gt; whereas the definition of coend I&amp;#39;ve seen about allows mapping into any symmetric monoidal category &lt;b&gt;X&lt;/b&gt;; I assume this is just you limiting the scope for simplicity of discussion?&lt;br /&gt;&lt;br /&gt;Second: your definition of profunctors allows the categories &lt;b&gt;C&lt;/b&gt; and &lt;b&gt;D&lt;/b&gt; to differ, whereas the definitions I&amp;#39;ve seen for coends has them be the same; is there a reason for this restriction on the definition of coends, or were these other authors just limiting the scope for simplicity?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8413732021924842887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8413732021924842887'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311497152624#c8413732021924842887' title=''/><author><name>winterkoninkje</name><uri>http://winterkoninkje.dreamwidth.org/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2041959020'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8854364998377542692</id><published>2011-07-23T18:45:37.064-07:00</published><updated>2011-07-23T18:45:37.064-07:00</updated><title type='text'>I wasn&amp;#39;t objecting to the argument order of &lt;i...</title><content type='html'>I wasn&amp;#39;t objecting to the argument order of &lt;i&gt;Compose&lt;/i&gt;; my comment was only about the paragraph below  &lt;i&gt;exists a. (d -&amp;gt; F a, a -&amp;gt; G c)&lt;/i&gt;, in which &lt;i&gt;(f,g)&lt;/i&gt; is taken to be of that type. &lt;br /&gt;&lt;br /&gt;I was just saying that in that case &lt;i&gt;fmap g . f&lt;/i&gt; is of type &lt;i&gt;d -&amp;gt; F (G c)&lt;/i&gt;, not &lt;i&gt;a -&amp;gt; F (G c)&lt;/i&gt; (nothing deep, just a typo I think).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8854364998377542692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/8854364998377542692'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311471937064#c8854364998377542692' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1551638444'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-441489801622385624</id><published>2011-07-23T16:28:41.833-07:00</published><updated>2011-07-23T16:28:41.833-07:00</updated><title type='text'>I think my statements are correct, but I made a ba...</title><content type='html'>I think my statements are correct, but I made a bad choice for the definition of Compose. I&amp;#39;m going to flip the definition. Tell me if you think the resulting statements are still incorrect and I&amp;#39;ll type up the full working out I have on paper.&lt;br /&gt;&lt;br /&gt;Thanks for looking closely though!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/441489801622385624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/441489801622385624'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311463721833#c441489801622385624' title=''/><author><name>sigfpe</name><uri>http://www.blogger.com/profile/08096190433222340957</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://homepage.mac.com/sigfpe/.Pictures/Photo%20Album%20Pictures/2002-12-07%2014.53.40%20-0800/ImageDSC01397_1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-961546855'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-9201668734525461075</id><published>2011-07-23T15:39:19.453-07:00</published><updated>2011-07-23T15:39:19.453-07:00</updated><title type='text'>I think the

&lt;i&gt;fmap g . f :: a -&amp;gt; F (G C)&lt;/i&gt;
...</title><content type='html'>I think the&lt;br /&gt;&lt;br /&gt;&lt;i&gt;fmap g . f :: a -&amp;gt; F (G C)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;should be&lt;br /&gt;&lt;br /&gt;&lt;i&gt;fmap g . f :: d -&amp;gt; F (G c)&lt;/i&gt; :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/9201668734525461075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/865972317776443412/comments/default/9201668734525461075'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html?showComment=1311460759453#c9201668734525461075' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html' ref='tag:blogger.com,1999:blog-11295132.post-865972317776443412' source='http://www.blogger.com/feeds/11295132/posts/default/865972317776443412' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1551638444'/></entry></feed>
