<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Random Hacks: Derivatives of algebraic data structures: An excellent tutorial</title>
    <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Technology and Other Fun Stuff</description>
    <item>
      <title>"Derivatives of algebraic data structures: An excellent tutorial" by Frank Atanassow</title>
      <description>&lt;p&gt;@Eric I beg to differ. The article starts, &amp;#8220;With the spreading popularity of languages like F# and Haskell, many people are encountering the concept of an algebraic data type for the first time.  When that term is produced without explanation, it almost invariably becomes a source of confusion.  In what sense are data types algebraic?&amp;#8221;&lt;/p&gt;


	&lt;p&gt;So whereas they claim to explain in what sense an adt is algebraic, what they end up explaining is in what sense the kind * is algebraic.&lt;/p&gt;</description>
      <pubDate>Tue, 24 May 2011 20:30:41 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:315bc7f5-70f3-44f0-b350-3e2b12d3bc44</guid>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial#comment-843</link>
    </item>
    <item>
      <title>"Derivatives of algebraic data structures: An excellent tutorial" by Eric</title>
      <description>&lt;p&gt;Aleksey, Steve: Thank you! I fixed the link.&lt;/p&gt;


	&lt;p&gt;Frank: Surely, among consenting category theorists, all isomorphic objects are  identical. ;-) Thank you for the correction.&lt;/p&gt;


	&lt;p&gt;The article isn&amp;#8217;t trying to explain algebraic data types by an analogy to differention. Rather, it&amp;#8217;s trying to explain type differentiation, and it needs to define a loose algebra of types to get there.&lt;/p&gt;</description>
      <pubDate>Mon, 23 May 2011 13:04:02 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:bff740aa-3380-48aa-86aa-5fe377809c4c</guid>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial#comment-841</link>
    </item>
    <item>
      <title>"Derivatives of algebraic data structures: An excellent tutorial" by Steve Massey</title>
      <description>&lt;p&gt;This is the same paper:&lt;/p&gt;


	&lt;p&gt;http://strictlypositive.org/Dissect.pdf&lt;/p&gt;</description>
      <pubDate>Sun, 22 May 2011 10:42:48 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:befc75bf-b0d4-444c-a5b2-b363276f6562</guid>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial#comment-840</link>
    </item>
    <item>
      <title>"Derivatives of algebraic data structures: An excellent tutorial" by Aleksey Khudyakov</title>
      <description>&lt;p&gt;This link leads to 403 page. Is this paper available anywhere else?&lt;/p&gt;


	&lt;p&gt;http://www.cs.nott.ac.uk/~ctm/Dissect.pdf&lt;/p&gt;</description>
      <pubDate>Sat, 21 May 2011 14:08:02 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f4105c04-9a23-4018-b76b-5fea2a4e80f2</guid>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial#comment-839</link>
    </item>
    <item>
      <title>"Derivatives of algebraic data structures: An excellent tutorial" by Frank Atanassow</title>
      <description>&lt;p&gt;I only read the first half, and it looks like a nice tutorial, but it does not explain what it claims to explain, namely in what sense adt&amp;#8217;s are algebraic.&lt;/p&gt;


	&lt;p&gt;Algebraic datatypes are not called algebraic because type constructors form an algebra, but rather because data constructors do. In fact, type constructors do not even form an algebra; they form a pseudo-algebra, which is a generalization of algebras. That is why properties like associativity of products only hold up to (unique, natural) isomorphism rather than up to type equality.&lt;/p&gt;


	&lt;p&gt;If you want to explain the algebraic nature of Haskell datatypes with an allusion to differentiation, you can do it by defining a datatype, say, of polynomials.&lt;/p&gt;</description>
      <pubDate>Fri, 20 May 2011 23:47:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f84ba62e-37d3-43fb-85d9-92139044456b</guid>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial#comment-837</link>
    </item>
    <item>
      <title>Derivatives of algebraic data structures: An excellent tutorial</title>
      <description>&lt;p&gt;Last month, the folks at Lab49 explained &lt;a href="http://blog.lab49.com/archives/3011"&gt;how to compute the derivative of a data structure&lt;/a&gt;. This is a great example of how to write about mathematical subjects for a casual audience: They draw analogies to well-known programming languages, they follow a single, well-chosen thread of explanation, and there&amp;#8217;s a clever payoff at the end.&lt;/p&gt;

&lt;p&gt;The Lab49 blog post is, of course, based on two &lt;a href="http://strictlypositive.org/diff.pdf"&gt;classic&lt;/a&gt; &lt;a href="http://strictlypositive.org/Dissect.pdf"&gt;papers&lt;/a&gt; by Conor McBride, and Huet&amp;#8217;s original paper &lt;a href="http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/huet-zipper.pdf"&gt;The Zipper&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re interested in real-world applications of this technique, there&amp;#8217;s a great explanation in the final chapter of &lt;a href="http://learnyouahaskell.com/zippers"&gt;Learn You a Haskell for Great Good&lt;/a&gt;. If you&amp;#8217;re interested in some deeper mathematical connections, see the &lt;a href="http://lambda-the-ultimate.org/node/1957"&gt;discussion at Lambda the Ultimate&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 20 May 2011 20:01:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:1f6b612b-f3cd-4f3a-8442-d23ce7769c8c</guid>
      <author>Eric Kidd</author>
      <link>http://www.randomhacks.net/articles/2011/05/20/derivatives-of-algebraic-data-structures-an-excellent-tutorial</link>
      <category>Haskell</category>
      <category>Math</category>
      <trackback:ping>http://www.randomhacks.net/articles/trackback/836</trackback:ping>
    </item>
  </channel>
</rss>
