<?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.post8742838534827791706..comments</id><updated>2009-12-28T22:43:30.972-08: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: Programming with impossible functions, or how to g...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.sigfpe.com/feeds/8742838534827791706/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.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-122092341130860313</id><published>2009-12-23T10:43:20.111-08:00</published><updated>2009-12-23T10:43:20.111-08:00</updated><title type='text'>Your coroutines can be extended with choice (a la ...</title><content type='html'>Your coroutines can be extended with choice (a la session types) with a few more lines of code:&lt;br /&gt;&lt;br /&gt;readOpt f g (Left  (c,cs)) = second Left $ f c cs&lt;br /&gt;readOpt f g (Right (c,cs)) = second Right $ g c cs&lt;br /&gt;writeRight o r is = let (v, os) = r (fromRight is) in (v, Right (o, os))&lt;br /&gt;writeLeft  o r is = let (v, os) = r (fromLeft is) in (v, Left (o, os))</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/122092341130860313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/122092341130860313'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1261593800111#c122092341130860313' title=''/><author><name>sclv</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2007220721'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-6131430629358376989</id><published>2009-12-22T10:19:36.398-08:00</published><updated>2009-12-22T10:19:36.398-08:00</updated><title type='text'>Great stuff!

Interestingly, I just also found out...</title><content type='html'>Great stuff!&lt;br /&gt;&lt;br /&gt;Interestingly, I just also found out about Bart Jacob&amp;#39;s co-algebraic view on object-oriented programming. See for example his papers ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.ru.nl/B.Jacobs/PAPERS/OOcoA.ps" rel="nofollow"&gt;Objects and classes, co-algebraically &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.ru.nl/B.Jacobs/CLG/JacobsCoalgebraIntro.pdf" rel="nofollow"&gt;Introduction to Coalgebra. Towards Mathematics of States and Observations&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/6131430629358376989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/6131430629358376989'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1261505976398#c6131430629358376989' title=''/><author><name>heckenpenner_rot</name><uri>http://www.blogger.com/profile/11645785715024119039</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-810557045'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-3411575448586826693</id><published>2009-12-09T22:18:40.326-08:00</published><updated>2009-12-09T22:18:40.326-08:00</updated><title type='text'>Just came back as I encountered this talk:

http:/...</title><content type='html'>Just came back as I encountered this talk:&lt;br /&gt;&lt;br /&gt;http://blog.well-typed.com/2009/12/talk-at-the-functional-programming-exchange/&lt;br /&gt;&lt;br /&gt;which also does something very reminiscent of the above.&lt;br /&gt;&lt;br /&gt;Must be something in the air these days.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3411575448586826693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3411575448586826693'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1260425920326#c3411575448586826693' title=''/><author><name>Janis Voigtländer</name><uri>http://www.iai.uni-bonn.de/~jv/</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/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1001498467'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-3597331301870355786</id><published>2009-12-03T19:26:02.715-08:00</published><updated>2009-12-03T19:26:02.715-08:00</updated><title type='text'>Dear Author blog.sigfpe.com ! 
It is possible and ...</title><content type='html'>Dear Author blog.sigfpe.com ! &lt;br /&gt;It is possible and necessary :) to discuss infinitely</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3597331301870355786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3597331301870355786'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259897162715#c3597331301870355786' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1868930023'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8483269563071341376</id><published>2009-11-29T23:51:11.762-08:00</published><updated>2009-11-29T23:51:11.762-08:00</updated><title type='text'>Looking forward to it!</title><content type='html'>Looking forward to it!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8483269563071341376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8483269563071341376'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259567471762#c8483269563071341376' title=''/><author><name>Janis Voigtländer</name><uri>http://www.iai.uni-bonn.de/~jv/</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/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1714809216'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8710651545694308654</id><published>2009-11-29T23:24:54.358-08:00</published><updated>2009-11-29T23:24:54.358-08:00</updated><title type='text'>I&amp;#39;ve read that exceptions and continuations ar...</title><content type='html'>I&amp;#39;ve read that exceptions and continuations are not algebraic effects. It would explain why Haskell need Monad and Lawvere Theories are not enough.&lt;br /&gt;&lt;br /&gt;But to be honest, I don&amp;#39;t yet really understand it. The paper http://homepages.inf.ed.ac.uk/gdp/publications/Effect_Handlers.pdf is the cause of my confusion and I&amp;#39;ll have to read it.&lt;br /&gt;&lt;br /&gt;In Plotkin papers, effects are related to constructors and handlers (not algebraic) to deconstructors.&lt;br /&gt;&lt;br /&gt;I wonder if there is a relation with coalgebra. I am just beginning to study effects so I have more questions than answers.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8710651545694308654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8710651545694308654'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259565894358#c8710651545694308654' title=''/><author><name>alpheccar</name><uri>http://www.blogger.com/profile/14645433315403867431</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-840620845'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-5491747130089220522</id><published>2009-11-29T13:35:16.252-08:00</published><updated>2009-11-29T13:35:16.252-08:00</updated><title type='text'>Janis,

Correction: Swiestra handles the free mona...</title><content type='html'>Janis,&lt;br /&gt;&lt;br /&gt;Correction: Swiestra handles the free monad case. I intend to handle the non-free case.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5491747130089220522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5491747130089220522'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259530516252#c5491747130089220522' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' 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-4245717085940750236</id><published>2009-11-29T08:38:20.474-08:00</published><updated>2009-11-29T08:38:20.474-08:00</updated><title type='text'>Janis,

Thanks! Those papers look awesome. My next...</title><content type='html'>Janis,&lt;br /&gt;&lt;br /&gt;Thanks! Those papers look awesome. My next blog post is going to be quite similar to Swiestra&amp;#39;s &amp;quot;Monads for Free&amp;quot; section, except I plan to answer the bit where he says &amp;quot;It is not immediately obvious what the type of our algebra should be&amp;quot; slightly differently.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4245717085940750236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4245717085940750236'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259512700474#c4245717085940750236' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' 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-47641360970846362</id><published>2009-11-29T03:23:42.863-08:00</published><updated>2009-11-29T03:23:42.863-08:00</updated><title type='text'>Regarding the idea of modelling effects by first c...</title><content type='html'>Regarding the idea of modelling effects by first constructing ASTs of an embedded language and then writing a small interpreter, you may want to consider this paper: &lt;br /&gt;http://doi.acm.org/10.1145/1291201.1291206&lt;br /&gt;&lt;br /&gt;I think some of your code appears there almost literally.&lt;br /&gt;&lt;br /&gt;And (to plug my own work :-)) regarding the idea of afterwards eliminating the ASTs and interpreter overhead, you may want to look at this:&lt;br /&gt;&lt;br /&gt;http://dx.doi.org/10.1007/978-3-540-70594-9_20&lt;br /&gt;&lt;br /&gt;(It&amp;#39;s a generic treatment, but Section 4 applies it to the &amp;quot;monad specification setting&amp;quot;.)&lt;br /&gt;&lt;br /&gt;Finally, regarding how to nicely combine sublanguages for different effects, you may want to look at:&lt;br /&gt;&lt;br /&gt;http://dx.doi.org/10.1017/S0956796808006758&lt;br /&gt;&lt;br /&gt;Happy reading. :-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/47641360970846362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/47641360970846362'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259493822863#c47641360970846362' title=''/><author><name>Janis Voigtländer</name><uri>http://www.iai.uni-bonn.de/~jv/</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/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-14656225'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-6611281536241382860</id><published>2009-11-28T22:33:52.568-08:00</published><updated>2009-11-28T22:33:52.568-08:00</updated><title type='text'>Chreighton, yes, and &amp;quot;so called&amp;quot; can als...</title><content type='html'>Chreighton, yes, and &amp;quot;so called&amp;quot; can also come across as &amp;quot;I&amp;#39;m an out of touch fuddy-duddy&amp;quot; - for example, when a judge writes something like &amp;quot;So-called computer &amp;quot;codes&amp;quot; direct the operation of the computer&amp;quot;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/6611281536241382860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/6611281536241382860'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259476432568#c6611281536241382860' title=''/><author><name>Robin</name><uri>http://www.blogger.com/profile/05420921538604886480</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-868573812'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-5638598210901870325</id><published>2009-11-28T22:01:28.544-08:00</published><updated>2009-11-28T22:01:28.544-08:00</updated><title type='text'>Colimits are the general categorical way of sticki...</title><content type='html'>Colimits are the general categorical way of sticking things together.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5638598210901870325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5638598210901870325'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259474488544#c5638598210901870325' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' 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-4802007418810862194</id><published>2009-11-28T19:17:20.200-08:00</published><updated>2009-11-28T19:17:20.200-08:00</updated><title type='text'>Ooh, awesome.  I actually hadn&amp;#39;t read that pap...</title><content type='html'>Ooh, awesome.  I actually hadn&amp;#39;t read that paper, but when Mr. Sigfpe said &amp;quot;quotient&amp;quot; my first thought was colimit.  It looks like the coproduct isn&amp;#39;t particularly useful in &amp;amp; of itself, but it&amp;#39;s a nice proof of concept that colimits are the notion you want for combining monads.  &lt;br /&gt;&lt;br /&gt;Not sure how to &amp;quot;pullback&amp;quot; colimits on free monads of signatures to more primitive operations.&lt;br /&gt;&lt;br /&gt;Also, this paper reminded me that one just shouldn&amp;#39;t use the phrase &amp;quot;so called&amp;quot; in an academic work.  Despite intentions, it sounds dismissive.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4802007418810862194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4802007418810862194'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259464640200#c4802007418810862194' title=''/><author><name>Creighton Hogg</name><uri>http://www.blogger.com/profile/09820771070038676909</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-721086539'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-323098368361060239</id><published>2009-11-28T18:19:37.665-08:00</published><updated>2009-11-28T18:19:37.665-08:00</updated><title type='text'>&amp;gt; an alternative universe in which languages li...</title><content type='html'>&amp;gt; an alternative universe in which languages like Haskell develop along a path in which monads don&amp;#39;t play a starring role. &lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Standard_ML</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/323098368361060239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/323098368361060239'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259461177665#c323098368361060239' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1021994492'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-2178999199984811238</id><published>2009-11-28T17:21:38.165-08:00</published><updated>2009-11-28T17:21:38.165-08:00</updated><title type='text'>This paper (which also has Ghani as a coauthor) ma...</title><content type='html'>This paper (which also has Ghani as a coauthor) may be relevant, they give a construction of a monad coproduct which is a quotient:&lt;br /&gt;&lt;br /&gt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.8.3581</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/2178999199984811238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/2178999199984811238'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259457698165#c2178999199984811238' title=''/><author><name>Roly Perera</name><uri>http://www.blogger.com/profile/10168144731270158487</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1233208844'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-8761736625002850593</id><published>2009-11-28T14:02:46.856-08:00</published><updated>2009-11-28T14:02:46.856-08:00</updated><title type='text'>Creighton,

That sounds a bit like where I got to....</title><content type='html'>Creighton,&lt;br /&gt;&lt;br /&gt;That sounds a bit like where I got to. I can easily write code that takes pairs of sets of signatures, combines them, and makes you a monad. It works perfectly well with do-notation. But it&amp;#39;s &amp;quot;too big&amp;quot; and you need an &amp;quot;interpreter&amp;quot; to cut it back down to size, ie. what you really want is a quotient.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8761736625002850593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/8761736625002850593'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259445766856#c8761736625002850593' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' 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-4916573044646566130</id><published>2009-11-28T13:50:58.893-08:00</published><updated>2009-11-28T13:50:58.893-08:00</updated><title type='text'>There&amp;#39;s a big caveat, imo, with that paper:  y...</title><content type='html'>There&amp;#39;s a big caveat, imo, with that paper:  you can combine the theories, but relating the monad made from them to the monad you morally _want_ is a little trickier.&lt;br /&gt;&lt;br /&gt;It wasn&amp;#39;t clear to me how that gets resolved.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4916573044646566130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/4916573044646566130'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259445058893#c4916573044646566130' title=''/><author><name>Creighton Hogg</name><uri>http://www.blogger.com/profile/09820771070038676909</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-721086539'/></entry><entry><id>tag:blogger.com,1999:blog-11295132.post-5035217823498242328</id><published>2009-11-28T13:43:16.442-08:00</published><updated>2009-11-28T13:43:16.442-08:00</updated><title type='text'>I&amp;#39;ll check out that paper, at first glance it ...</title><content type='html'>I&amp;#39;ll check out that paper, at first glance it looks like exactly what I want. I searched hard for papers with concrete examples but everything I found was pretty abstract.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5035217823498242328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/5035217823498242328'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259444596442#c5035217823498242328' 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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' 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-3976155948673728749</id><published>2009-11-28T13:26:39.715-08:00</published><updated>2009-11-28T13:26:39.715-08:00</updated><title type='text'>http://www.cs.nott.ac.uk/~gmh/modular.pdf
You prob...</title><content type='html'>http://www.cs.nott.ac.uk/~gmh/modular.pdf&lt;br /&gt;You probably would enjoy reading the above paper.  It&amp;#39;s a bit about how to implement the combination of signatures together.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s a bit...ungainly, but seems relevant.&lt;br /&gt;&lt;br /&gt;Now the thing that&amp;#39;s really cute, and what ties in to Conal Elliott&amp;#39;s Type Class Morphism paper, is that an actual implementation of a signature, a model, corresponds to a functor &amp;amp; morphisms between models correspond to natural transformations.  Conal was looking at it more from the functorial point of view, you&amp;#39;re starting a bit more directly from models.&lt;br /&gt;&lt;br /&gt;Either way, there&amp;#39;s an equivalence between the perspectives (in the categoric sense).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3976155948673728749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11295132/8742838534827791706/comments/default/3976155948673728749'/><link rel='alternate' type='text/html' href='http://blog.sigfpe.com/2009/11/programming-with-impossible-functions.html?showComment=1259443599715#c3976155948673728749' title=''/><author><name>Creighton Hogg</name><uri>http://www.blogger.com/profile/09820771070038676909</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/2009/11/programming-with-impossible-functions.html' ref='tag:blogger.com,1999:blog-11295132.post-8742838534827791706' source='http://www.blogger.com/feeds/11295132/posts/default/8742838534827791706' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-721086539'/></entry></feed>
