<?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 on: From the chain rule to automatic differentiation</title>
	<atom:link href="http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Sat, 26 Sep 2020 21:06:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.17</generator>
	<item>
		<title>By: Ryan Ingram</title>
		<link>http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation#comment-366</link>
		<dc:creator><![CDATA[Ryan Ingram]]></dc:creator>
		<pubDate>Fri, 13 Feb 2009 02:29:37 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=82#comment-366</guid>
		<description><![CDATA[&lt;p&gt;I see where you are going, but you&#039;re relying on a lot of compiler machinery (correct inlining, rewrites, etc.) in order to get a modest gain (adiff g = g &gt;-&lt; deriv g).&lt;/p&gt;

&lt;p&gt;I&#039;d prefer a solution in which this reliance is made explicit at compile time; basically relying on Template Haskell or the like to enforce that the g passed to adiff is a compile-time-constant which can be safely passed to deriv.&lt;/p&gt;

&lt;p&gt;In fact, I think TH could be useful for a lot of things if the syntax for invoking it wasn&#039;t so ugly.  I&#039;d love for a &quot;transparent&quot; TH. Consider a macro application in LISP: in the source code, it looks just like a function call.  Perhaps a TH function should get some form of context (the AST it is a part of) and be allowed to return parts of that context &quot;unmodified&quot; after picking out the data it expects, instead of needing to use the ugly splice syntax.&lt;/p&gt;

&lt;p&gt;This would give you the same power that you get from rewrite rules but relying on the specification of the language rather than the internals of the optimizer.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>I see where you are going, but you&#8217;re relying on a lot of compiler machinery (correct inlining, rewrites, etc.) in order to get a modest gain (adiff g = g &gt;-&lt; deriv g).</p>

<p>I&#8217;d prefer a solution in which this reliance is made explicit at compile time; basically relying on Template Haskell or the like to enforce that the g passed to adiff is a compile-time-constant which can be safely passed to deriv.</p>

<p>In fact, I think TH could be useful for a lot of things if the syntax for invoking it wasn&#8217;t so ugly.  I&#8217;d love for a &#8220;transparent&#8221; TH. Consider a macro application in LISP: in the source code, it looks just like a function call.  Perhaps a TH function should get some form of context (the AST it is a part of) and be allowed to return parts of that context &#8220;unmodified&#8221; after picking out the data it expects, instead of needing to use the ugly splice syntax.</p>

<p>This would give you the same power that you get from rewrite rules but relying on the specification of the language rather than the internals of the optimizer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation#comment-365</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Wed, 11 Feb 2009 23:24:15 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=82#comment-365</guid>
		<description><![CDATA[&lt;p&gt;Hi Ryan,&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;... rewrite rules should not be relied on for correctness, ...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That guideline is the conventional wisdom I hear.
I hope that examples like the one above motivate a shift, so that rewrite rules can be counted on, considering the boost in modularity that results.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Hi Ryan,</p>

<blockquote>
  <p>&#8230; rewrite rules should not be relied on for correctness, &#8230;</p>
</blockquote>

<p>That guideline is the conventional wisdom I hear.
I hope that examples like the one above motivate a shift, so that rewrite rules can be counted on, considering the boost in modularity that results.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Ingram</title>
		<link>http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation#comment-364</link>
		<dc:creator><![CDATA[Ryan Ingram]]></dc:creator>
		<pubDate>Wed, 11 Feb 2009 22:39:58 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=82#comment-364</guid>
		<description><![CDATA[&lt;p&gt;The use of rewrite rules is a cool hack, but it feels too fragile for production code.  The &quot;rule&quot; I use for my code (apologies for the pun) is that rewrite rules should not be relied on for correctness, only performance.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>The use of rewrite rules is a cool hack, but it feels too fragile for production code.  The &#8220;rule&#8221; I use for my code (apologies for the pun) is that rewrite rules should not be relied on for correctness, only performance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: newsham</title>
		<link>http://conal.net/blog/posts/from-the-chain-rule-to-automatic-differentiation#comment-363</link>
		<dc:creator><![CDATA[newsham]]></dc:creator>
		<pubDate>Tue, 10 Feb 2009 04:51:05 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=82#comment-363</guid>
		<description><![CDATA[&lt;p&gt;I don&#039;t know whether to laugh or cry.  I think I like it.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>I don&#8217;t know whether to laugh or cry.  I think I like it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
