<?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>Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx</link><description>Last time I mentioned that one of the subtleties of programming language design is weighing the benefit of adding a feature against the pain it will cause you in the future. This is a specific subset of a more general set of problems. Languages run into</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4670097</link><pubDate>Fri, 31 Aug 2007 17:23:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4670097</guid><dc:creator>MichaelGiagnocavo</dc:creator><description>&lt;p&gt;Heck yea they're worth it. Without it, I don't even want to imagine the syntax :\. While you're on the topic, can you explain why method groups don't get the same inferrence? &lt;/p&gt;
</description></item><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4671074</link><pubDate>Fri, 31 Aug 2007 18:39:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4671074</guid><dc:creator>Stuart Ballard</dc:creator><description>&lt;p&gt;I'm unconvinced about the various &amp;quot;typeless, but convertible to various types&amp;quot; things.&lt;/p&gt;
&lt;p&gt;I wouldn't have minded a syntax like:&lt;/p&gt;
&lt;p&gt;(string s, int i) =&amp;gt; s + i&lt;/p&gt;
&lt;p&gt;Situations like this one could be resolved similarly to the way the ternary is:&lt;/p&gt;
&lt;p&gt;(string s, int i) =&amp;gt; {&lt;/p&gt;
&lt;p&gt; &amp;nbsp;if (i &amp;gt; 0) {&lt;/p&gt;
&lt;p&gt; &amp;nbsp; return expr1;&lt;/p&gt;
&lt;p&gt; &amp;nbsp;} else {&lt;/p&gt;
&lt;p&gt; &amp;nbsp; return expr2;&lt;/p&gt;
&lt;p&gt; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;With a syntax like that the type of every lambda could be explicit (an &amp;quot;anonymous delegate type&amp;quot; if you like) and inferable completely from its own content without worrying about what type it's being converted to. Then come up with some smart rules about convertability of delegates in general, and you've got a system without any of these issues.&lt;/p&gt;
&lt;p&gt;It doesn't feel in the &amp;quot;spirit&amp;quot; of C# to have expressions or entire method bodies whose meaning depends in such a subtle way on the type to which the value is being converted.&lt;/p&gt;
&lt;p&gt;Having said that, I still love the feature and can't wait to get to use it in real code, even if I do have nitpicks :)&lt;/p&gt;
</description></item><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4672326</link><pubDate>Fri, 31 Aug 2007 20:28:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4672326</guid><dc:creator>Eric Lippert</dc:creator><description>&lt;p&gt;Michael: Method groups _do_ get the same inference. Or, at least, very similar inference. &amp;nbsp;Can you clarify the question?&lt;/p&gt;
</description></item><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4673146</link><pubDate>Fri, 31 Aug 2007 21:23:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4673146</guid><dc:creator>Jon Skeet</dc:creator><description>&lt;p&gt;Eric,&lt;/p&gt;
&lt;p&gt;Out of interest are the C# team keeping abreast of the Java language features being proposed?&lt;/p&gt;
&lt;p&gt;In particular, I thought you and other readers might be interested in this blog:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.sun.com/abuckley/"&gt;http://blogs.sun.com/abuckley/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The two most recent entries talk about compatibility and the cost of new features, which are of course closely related to the topic of this blog post.&lt;/p&gt;
&lt;p&gt;I have to say, it's great that both communities are blogging about language design issues. The difficulties involved have been somewhat shrouded in mystery in the past...&lt;/p&gt;
&lt;p&gt;Jon&lt;/p&gt;
</description></item><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4673873</link><pubDate>Fri, 31 Aug 2007 22:00:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4673873</guid><dc:creator>MichaelGiagnocavo</dc:creator><description>&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;static void executor&amp;lt;T&amp;gt;(Action&amp;lt;T&amp;gt; f) { f(default(T)); }&lt;/p&gt;
&lt;p&gt;static void Main(string[] args)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;executor(Main);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Generates error CS0411: The type arguments for method 'Program.executor&amp;lt;T&amp;gt;(System.Action&amp;lt;T&amp;gt;)' cannot be inferred from the usage. Try specifying the type arguments explicitly.&lt;/p&gt;
&lt;p&gt;It'd also be nice if method groups could automatically be treated as delegates. The rest of my inference desires are summed up here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.atrevido.net/blog/2007/08/02/C+Frustration.aspx"&gt;http://www.atrevido.net/blog/2007/08/02/C+Frustration.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Future Breaking Changes, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4742730</link><pubDate>Tue, 04 Sep 2007 18:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4742730</guid><dc:creator>Eric Lippert</dc:creator><description>&lt;p&gt;MichaelGiagnocavo: Thanks for clarifying. There is a good reason why we do not do that. &amp;nbsp;I'll leave a comment on your blog explaining why.&lt;/p&gt;
</description></item><item><title>Future Breaking Changes, Part Three</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#4795613</link><pubDate>Fri, 07 Sep 2007 01:22:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4795613</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description>&lt;p&gt;As I said earlier , we hate causing breaking changes in our product, the C# compiler, because they cause&lt;/p&gt;
</description></item><item><title>Learning WPF with BabySmash - Factories, Interfaces, Delegates and Lambdas, oh my!</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#8594186</link><pubDate>Fri, 13 Jun 2008 10:23:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8594186</guid><dc:creator>ASPInsiders</dc:creator><description>&lt;p&gt;NOTE: If you haven't read the first post in this series, I would encourage you do to that first , or&lt;/p&gt;
</description></item><item><title>Learning WPF with BabySmash - Factories, Interfaces, Delegates and Lambdas, oh my!</title><link>http://blogs.msdn.com/ericlippert/archive/2007/08/31/future-breaking-changes-part-two.aspx#9413721</link><pubDate>Thu, 12 Feb 2009 02:53:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9413721</guid><dc:creator>BabySmash</dc:creator><description>&lt;p&gt;NOTE: If you haven&amp;amp;#39;t read the first post in this series, I would encourage you do to that first&lt;/p&gt;
</description></item></channel></rss>