<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Understanding Tail Recursion</title><link>http://blogs.msdn.com/chrsmith/archive/2008/08/07/understanding-tail-recursion.aspx</link><description>You may have heard of Tail Recursion before, in fact, you may have even written tail recursive functions before without even knowing it. Even so, why should you care? Safety. Functional programming relies on recursive functions heavily since imperative</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>a-foton &amp;raquo; Understanding Tail Recursion</title><link>http://blogs.msdn.com/chrsmith/archive/2008/08/07/understanding-tail-recursion.aspx#8841977</link><pubDate>Fri, 08 Aug 2008 03:16:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8841977</guid><dc:creator>a-foton &amp;raquo; Understanding Tail Recursion</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blog.a-foton.ru/2008/08/understanding-tail-recursion/"&gt;http://blog.a-foton.ru/2008/08/understanding-tail-recursion/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Understanding Tail Recursion</title><link>http://blogs.msdn.com/chrsmith/archive/2008/08/07/understanding-tail-recursion.aspx#8845282</link><pubDate>Sun, 10 Aug 2008 00:30:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8845282</guid><dc:creator>Mostafa Elhemali</dc:creator><description>&lt;p&gt;So is there a way in VS to quickly know if a function is tail recursive or not?&lt;/p&gt;
</description></item><item><title>re: Understanding Tail Recursion</title><link>http://blogs.msdn.com/chrsmith/archive/2008/08/07/understanding-tail-recursion.aspx#8846448</link><pubDate>Sun, 10 Aug 2008 13:18:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8846448</guid><dc:creator>Dave Bayer</dc:creator><description>&lt;p&gt;I find it astonishing that in Lisp-like languages (including the ML family), &amp;quot;tail recursion modulo cons&amp;quot; not only has a name, but is rarely implemented. One could generalize this to allowing compilers to exploit associativity, to automatically rewrite your first factorial example as properly tail recursive.&lt;/p&gt;
&lt;p&gt;I love functional languages. However, in an ideal world one could be required to have a deep understanding of tail recursion (thanks for spreading an explanation) without being forced to keep track of it in practice. In how many languages does one need to worry about folding left versus right, for purely efficiency reasons? This is as barbaric as asking a programmer to allocate registers; shame on the compiler writers.&lt;/p&gt;
&lt;p&gt;A tail-recursive function is a verbose way to express a grammatical transformation on data, either actual or implied by a computation such as factorial. If we could assume all programmers understood e.g. parsing theory, then languages could emerge with more concise, algebraic descriptions of these transformations. Scripting languages take for granted regular expressions on strings, but no language is as fluid with grammatical transformations of other kinds of data.&lt;/p&gt;
</description></item><item><title>re: Understanding Tail Recursion</title><link>http://blogs.msdn.com/chrsmith/archive/2008/08/07/understanding-tail-recursion.aspx#8848290</link><pubDate>Mon, 11 Aug 2008 18:41:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8848290</guid><dc:creator>ChrSmith</dc:creator><description>&lt;p&gt;No, there is no indiciate from the Visual Studio IDE if a function will be compiled as tail-recursive or not. It's something which we've talked about before though.&lt;/p&gt;
</description></item></channel></rss>