<?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>Don Syme's WebLog on F# and Related Topics - All Comments</title><link>http://blogs.msdn.com/b/dsyme/</link><description /><dc:language>en-GB</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: Twelve F# type providers in action</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/01/30/twelve-type-providers-in-pictures.aspx#10414905</link><pubDate>Mon, 29 Apr 2013 21:27:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10414905</guid><dc:creator>James Moore</dc:creator><description>&lt;p&gt;FYI, lots of those image links are dead (CSV, XML, JSON...)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[ Don says: &amp;nbsp;thanks! should now be fixed ]&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10414905" width="1" height="1"&gt;</description></item><item><title>re: "Stati-C/AL Supervision – static analysis for Microsoft Dynamics NAV"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/04/07/quot-stati-c-al-supervision-static-analysis-for-microsoft-dynamics-nav-quot.aspx#10410924</link><pubDate>Sun, 14 Apr 2013 15:25:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10410924</guid><dc:creator>Ryan Riley</dc:creator><description>&lt;p&gt;You can learn more from the recent C4F# live meeting: &lt;a rel="nofollow" target="_new" href="http://fpish.net/course/462"&gt;http://fpish.net/course/462&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10410924" width="1" height="1"&gt;</description></item><item><title>re: "Stati-C/AL Supervision – static analysis for Microsoft Dynamics NAV"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/04/07/quot-stati-c-al-supervision-static-analysis-for-microsoft-dynamics-nav-quot.aspx#10410915</link><pubDate>Sun, 14 Apr 2013 14:40:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10410915</guid><dc:creator>Bent Rasmussen</dc:creator><description>&lt;p&gt;Thanks for the mention Don; we&amp;#39;ve just come out with another tool, Prism:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://stati-cal.com/projects/prism/"&gt;stati-cal.com/.../prism&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a WPF application (using the same libraries we wrote for Supervision, albeit improved and extended). Everything - even the WPF project is written in F# (well, one caveat is that one project with some user controls is written in C#).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10410915" width="1" height="1"&gt;</description></item><item><title>re: F# testimonials on fsharp.org</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/04/07/f-testimonials-on-fsharp-org.aspx#10410071</link><pubDate>Wed, 10 Apr 2013 16:35:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10410071</guid><dc:creator>dsyme</dc:creator><description>&lt;p&gt;Daniel - you just email fsharp@fsharp.org&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10410071" width="1" height="1"&gt;</description></item><item><title>re: F# testimonials on fsharp.org</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/04/07/f-testimonials-on-fsharp-org.aspx#10410063</link><pubDate>Wed, 10 Apr 2013 16:30:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10410063</guid><dc:creator>Daniel</dc:creator><description>&lt;p&gt;How do you join F# Foundation?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10410063" width="1" height="1"&gt;</description></item><item><title>re: Quote of the Week: "What can C# do that F# cannot?"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/03/25/quote-of-the-week-quot-what-can-c-do-that-f-cannot-quot.aspx#10409134</link><pubDate>Sun, 07 Apr 2013 12:38:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10409134</guid><dc:creator>Steffen Forkmann</dc:creator><description>&lt;p&gt;Shameless plug: trigged by this discussion I wrote &amp;quot;A tale of nulls&amp;quot; &lt;a rel="nofollow" target="_new" href="http://www.navision-blog.de/blog/2013/04/03/a-tale-of-nulls/"&gt;www.navision-blog.de/.../a-tale-of-nulls&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10409134" width="1" height="1"&gt;</description></item><item><title>re: Quote of the Week: "What can C# do that F# cannot?"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/03/25/quote-of-the-week-quot-what-can-c-do-that-f-cannot-quot.aspx#10407542</link><pubDate>Thu, 04 Apr 2013 11:46:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10407542</guid><dc:creator>Marc Sigrist</dc:creator><description>&lt;p&gt;Over a year ago, I suggested adding non-nullable reference types to C# (see &lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2320188-add-non-nullable-reference-types-in-c-"&gt;visualstudio.uservoice.com/.../2320188-add-non-nullable-reference-types-in-c-&lt;/a&gt;). The suggestion has since become one of the top voted-for C#-related items.&lt;/p&gt;
&lt;p&gt;I have now commented my own suggestion, indicating that a different language design -- forbidding null by default -- would be even better, and that F# sets a good example. Unfortunately, it is not very realistic that such a fundamental design change will be introduced to a long-established mainstream language such as C#.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10407542" width="1" height="1"&gt;</description></item><item><title>re: Quote of the Week: "What can C# do that F# cannot?"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/03/25/quote-of-the-week-quot-what-can-c-do-that-f-cannot-quot.aspx#10405988</link><pubDate>Thu, 28 Mar 2013 10:22:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10405988</guid><dc:creator>Mark Allread</dc:creator><description>&lt;p&gt;NRE isn&amp;#39;t an acronym.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10405988" width="1" height="1"&gt;</description></item><item><title>re: Quote of the Week: "What can C# do that F# cannot?"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/03/25/quote-of-the-week-quot-what-can-c-do-that-f-cannot-quot.aspx#10405916</link><pubDate>Thu, 28 Mar 2013 01:48:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10405916</guid><dc:creator>melnakeeb</dc:creator><description>&lt;p&gt;A very interesting article. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10405916" width="1" height="1"&gt;</description></item><item><title>re: Quote of the Week: "What can C# do that F# cannot?"</title><link>http://blogs.msdn.com/b/dsyme/archive/2013/03/25/quote-of-the-week-quot-what-can-c-do-that-f-cannot-quot.aspx#10405915</link><pubDate>Thu, 28 Mar 2013 01:35:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10405915</guid><dc:creator>JeroMiya</dc:creator><description>&lt;p&gt;I think it is slightly unfair to group scala in with java and C#, seeing as how an exception was made for F# code calling into C# code. Idiomatic Scala code using Option[T] works similarly to F# code using the Option&amp;lt;T&amp;gt; class in F# - namely using pattern matching and for comprehensions to destructure the Option, making a null reference exception impossible (as long as you always use pattern matching/for comprehensions to extract the value out of the Option).&lt;/p&gt;
&lt;p&gt;The last sentence is the problem with both F# and Scala - they don&amp;#39;t really go far enough. Option[T] is, in effect, only a rudimentary attempt at including a &amp;quot;code contract&amp;quot; or &amp;quot;design by contract&amp;quot; type system, but only for nullable vs. non-nullable type contracts, and even then it&amp;#39;s only if you follow convention.&lt;/p&gt;
&lt;p&gt;If you look at languages like Spec#, C#/VB with Microsoft&amp;#39;s Code Contracts enabled (I count that as a different language), or the Eiffel programming language those technologies were based on, you&amp;#39;ll see that even more is possible. Option[T] and Option&amp;lt;T&amp;gt; don&amp;#39;t go far enough because there&amp;#39;s nothing stopping you from using them incorrectly, only convention. A language which allows explicit preconditions, postconditions, and invariants, can enforce those at compile time. If you have a function which takes a string and it&amp;#39;s marked as only taking non-null strings, you literally cannot pass it a string that could possibly be null under any code path - you&amp;#39;ll get an error at compile time. &lt;/p&gt;
&lt;p&gt;Design by contract systems have their weaknesses, particularly when interacting with code that is not annotated with contracts, but also in cases where it&amp;#39;s impossible for the compiler to prove statically that a contract is being honored - in these cases you have to give the compiler hints sometimes with things like assertions and assumptions which allow you to isolate those issues locally. That is typically cited as the reason these kinds of languages haven&amp;#39;t caught on (that and the complexity of implementing a static contract verifier). &amp;nbsp;But by and large, these languages are to F# and Scala what F# and Scala are to C# and Java in terms of the compiler being able to statically verify the absence of a larger class of software bugs.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10405915" width="1" height="1"&gt;</description></item></channel></rss>