<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: I still don&#8217;t get F#</title>
	<atom:link href="http://rogeralsing.com/2009/12/27/i-still-dont-get-f/feed/" rel="self" type="application/rss+xml" />
	<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 14:35:30 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Gustavs</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1535</link>
		<dc:creator><![CDATA[Gustavs]]></dc:creator>
		<pubDate>Wed, 03 Mar 2010 02:52:24 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1535</guid>
		<description><![CDATA[The comments do answer the question, and I think the reason you pass them off is the point where you say F# is not significantly more concise than C#. It is.

It allows your data and function definitions to take as few lines of code as they should be taking.

Record and variant declarations, which are given on a single line usually, would correspond to one member per component and a class per constructor in C#. The LOC ratio is large, even more if you define redundant accessors and follow other &#039;good style&#039; guidelines.

Pipelining is something you can do about the same in C# (although the examples you&#039;ve looked at have likely been simple), and this is thanks to additions inspired exactly by the paradigm F# is representing.

The family of languages F# comes from is very old though, it could be less verbose. In a Haskell-like language, which is more to my preference, you could define your function as:
squarelist = map (^2)
It gets more fun with larger examples of course, such as where the name is not longer than the definition.

To find computations where F# gets more concise you have to look at recursive algorithms, uses of the variant types and such. A function to insert a node into a binary tree might be 5 lines in F#, but 50 in C#.

The code ends up being more horizontal, and your eyes stay on the same line more often when you&#039;re reasoning instead of jumping around the page.


You might not care much for all the line counting being used to C#, but compact code is certainly easier to navigate and manipulate rapidly.

I recently wrote a physics engine in C#, and taking care to clean up and optimize all the code I took from, I ended up at under 1k lines, being fully featured. This should make the engine excellent for educational and customization purposes.
If I&#039;d written it in F# (it was my first use of .NET, so I somewhat needed IDE hand-holding), it might be even half that. How cool would that be.

I also recently took a look at your SyntaxBox component, it was like 30k lines? After some problems and more browsing I decided I&#039;d write my own renderer and parser, in F# this time; I don&#039;t think it will be above 1k lines, with all the same features. That&#039;s sort of my coding style.


Ahh, cheers]]></description>
		<content:encoded><![CDATA[<p>The comments do answer the question, and I think the reason you pass them off is the point where you say F# is not significantly more concise than C#. It is.</p>
<p>It allows your data and function definitions to take as few lines of code as they should be taking.</p>
<p>Record and variant declarations, which are given on a single line usually, would correspond to one member per component and a class per constructor in C#. The LOC ratio is large, even more if you define redundant accessors and follow other &#8216;good style&#8217; guidelines.</p>
<p>Pipelining is something you can do about the same in C# (although the examples you&#8217;ve looked at have likely been simple), and this is thanks to additions inspired exactly by the paradigm F# is representing.</p>
<p>The family of languages F# comes from is very old though, it could be less verbose. In a Haskell-like language, which is more to my preference, you could define your function as:<br />
squarelist = map (^2)<br />
It gets more fun with larger examples of course, such as where the name is not longer than the definition.</p>
<p>To find computations where F# gets more concise you have to look at recursive algorithms, uses of the variant types and such. A function to insert a node into a binary tree might be 5 lines in F#, but 50 in C#.</p>
<p>The code ends up being more horizontal, and your eyes stay on the same line more often when you&#8217;re reasoning instead of jumping around the page.</p>
<p>You might not care much for all the line counting being used to C#, but compact code is certainly easier to navigate and manipulate rapidly.</p>
<p>I recently wrote a physics engine in C#, and taking care to clean up and optimize all the code I took from, I ended up at under 1k lines, being fully featured. This should make the engine excellent for educational and customization purposes.<br />
If I&#8217;d written it in F# (it was my first use of .NET, so I somewhat needed IDE hand-holding), it might be even half that. How cool would that be.</p>
<p>I also recently took a look at your SyntaxBox component, it was like 30k lines? After some problems and more browsing I decided I&#8217;d write my own renderer and parser, in F# this time; I don&#8217;t think it will be above 1k lines, with all the same features. That&#8217;s sort of my coding style.</p>
<p>Ahh, cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hoang</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1508</link>
		<dc:creator><![CDATA[Hoang]]></dc:creator>
		<pubDate>Mon, 15 Feb 2010 08:47:43 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1508</guid>
		<description><![CDATA[I think most of the comments here has answer your question quite elegantly. I just want to point out that by stating: I can do the same thing in C#, here is my library; you&#039;ve already answered your own question. F# support all that out of the box because it&#039;s a functional language. In fact your supporting library, assuming that it&#039;s written correctly, is turning that part of C# into a functional language.]]></description>
		<content:encoded><![CDATA[<p>I think most of the comments here has answer your question quite elegantly. I just want to point out that by stating: I can do the same thing in C#, here is my library; you&#8217;ve already answered your own question. F# support all that out of the box because it&#8217;s a functional language. In fact your supporting library, assuming that it&#8217;s written correctly, is turning that part of C# into a functional language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ShuggyCoUk</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1495</link>
		<dc:creator><![CDATA[ShuggyCoUk]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 15:32:08 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1495</guid>
		<description><![CDATA[&gt; &quot;(ok, it’s not 100% clean)&quot;

it&#039;s good that you independently came up with the MiscUtil stuff which is impressive, but it is nothing like the performance of inline, doesn&#039;t play nice with mixing compatible types with coercion and doesn&#039;t support other user types that provide operators 
Want your Complex struct to work for example? code it all yourself.

&gt; &quot;I’m building DSL’s/compilers too, and I’m still not sold on F#.&quot;

Truly amazed. 

Try this in c#
http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-0.aspx]]></description>
		<content:encoded><![CDATA[<p>&gt; &#8220;(ok, it’s not 100% clean)&#8221;</p>
<p>it&#8217;s good that you independently came up with the MiscUtil stuff which is impressive, but it is nothing like the performance of inline, doesn&#8217;t play nice with mixing compatible types with coercion and doesn&#8217;t support other user types that provide operators<br />
Want your Complex struct to work for example? code it all yourself.</p>
<p>&gt; &#8220;I’m building DSL’s/compilers too, and I’m still not sold on F#.&#8221;</p>
<p>Truly amazed. </p>
<p>Try this in c#<br />
<a href="http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-0.aspx" rel="nofollow">http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-0.aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Alsing</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1494</link>
		<dc:creator><![CDATA[Roger Alsing]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 14:41:01 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1494</guid>
		<description><![CDATA[&gt;&gt;Ever found the inability to express operators in generic constraints in c# a pain?

you mean like this? :-)
http://rogeralsing.com/2008/02/27/linq-expressions-calculating-with-generics/

(ok, it&#039;s not 100% clean)

And it&#039;s not like I only do LOB things.
I&#039;m building DSL&#039;s/compilers too, and I&#039;m still not sold on F#.]]></description>
		<content:encoded><![CDATA[<p>&gt;&gt;Ever found the inability to express operators in generic constraints in c# a pain?</p>
<p>you mean like this? :-)<br />
<a href="http://rogeralsing.com/2008/02/27/linq-expressions-calculating-with-generics/" rel="nofollow">http://rogeralsing.com/2008/02/27/linq-expressions-calculating-with-generics/</a></p>
<p>(ok, it&#8217;s not 100% clean)</p>
<p>And it&#8217;s not like I only do LOB things.<br />
I&#8217;m building DSL&#8217;s/compilers too, and I&#8217;m still not sold on F#.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ShuggyCoUk</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1493</link>
		<dc:creator><![CDATA[ShuggyCoUk]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 14:32:13 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1493</guid>
		<description><![CDATA[I quoted your comment. (albeit your blog stripped the first quote)

Your expectations seem way too high.  There will be plenty of stuff of about the same effort, plenty much nicer in c# (bit manipulation, massively/heavily recursively dependent type hierarchies) and plenty much nicer in f#.

Many of the examples given to you that really are much better in f# you haven&#039;t acknowledged but the sort of people using them in finance aren&#039;t going to just put the code online :) 

Another one you can&#039;t ever approximate:

Ever found the inability to express operators in generic constraints in c# a pain? take a look at &#039;inline&#039; c# has nothing like it at all.

That those things don&#039;t matter to you (or to many LOB apps) is by the by. Not every one ids doing what you do.]]></description>
		<content:encoded><![CDATA[<p>I quoted your comment. (albeit your blog stripped the first quote)</p>
<p>Your expectations seem way too high.  There will be plenty of stuff of about the same effort, plenty much nicer in c# (bit manipulation, massively/heavily recursively dependent type hierarchies) and plenty much nicer in f#.</p>
<p>Many of the examples given to you that really are much better in f# you haven&#8217;t acknowledged but the sort of people using them in finance aren&#8217;t going to just put the code online :) </p>
<p>Another one you can&#8217;t ever approximate:</p>
<p>Ever found the inability to express operators in generic constraints in c# a pain? take a look at &#8216;inline&#8217; c# has nothing like it at all.</p>
<p>That those things don&#8217;t matter to you (or to many LOB apps) is by the by. Not every one ids doing what you do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Alsing</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1492</link>
		<dc:creator><![CDATA[Roger Alsing]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 14:01:05 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1492</guid>
		<description><![CDATA[The entire post is about &gt;&gt;me not knowing/seeing where F# shines&lt;&lt;.

That doesn&#039;t mean that I think F# is a horrible language, it means that what I&#039;ve seen so far isn&#039;t that exciting.

I explicitly asks for samples that can enlighten me.
Read the bottom part of the post...

My arguments are based on the samples that have been shown in public on F#.
e.g. various async RSS readers and what not.
Pretty much all of those samples can be done in C# with almost the same amount of code.]]></description>
		<content:encoded><![CDATA[<p>The entire post is about &gt;&gt;me not knowing/seeing where F# shines&lt;&lt;.</p>
<p>That doesn&#039;t mean that I think F# is a horrible language, it means that what I&#039;ve seen so far isn&#039;t that exciting.</p>
<p>I explicitly asks for samples that can enlighten me.<br />
Read the bottom part of the post&#8230;</p>
<p>My arguments are based on the samples that have been shown in public on F#.<br />
e.g. various async RSS readers and what not.<br />
Pretty much all of those samples can be done in C# with almost the same amount of code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Vincent</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1491</link>
		<dc:creator><![CDATA[Eric Vincent]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 13:39:54 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1491</guid>
		<description><![CDATA[So you&#039;re not asking &quot;why does F# exist&quot;, but rather, &quot;why is Microsoft marketing F# as the new best thing&quot;. 

First, I don&#039;t see where F# is being marketed as the &quot;new best thing&quot;. Perhaps you should site examples. After browsing over msdn.microsoft.com/fsharp and msdn.microsoft.com/visualstudio, I didn&#039;t see anything to support your claim. The titling on the F# page reads:

&quot;F# is a functional programming language for the .NET Framework. It combines the succinct, expressive, and compositional style of functional programming with the runtime, libraries, interoperability, and object model of .NET.&quot;

Pretty benign statement of fact that is.
Not only am I not seeing your point, I&#039;m starting to thing you&#039;re trolling for ... I don&#039;t know what... traffic? attention? There&#039;s no interesting debate happening here.]]></description>
		<content:encoded><![CDATA[<p>So you&#8217;re not asking &#8220;why does F# exist&#8221;, but rather, &#8220;why is Microsoft marketing F# as the new best thing&#8221;. </p>
<p>First, I don&#8217;t see where F# is being marketed as the &#8220;new best thing&#8221;. Perhaps you should site examples. After browsing over msdn.microsoft.com/fsharp and msdn.microsoft.com/visualstudio, I didn&#8217;t see anything to support your claim. The titling on the F# page reads:</p>
<p>&#8220;F# is a functional programming language for the .NET Framework. It combines the succinct, expressive, and compositional style of functional programming with the runtime, libraries, interoperability, and object model of .NET.&#8221;</p>
<p>Pretty benign statement of fact that is.<br />
Not only am I not seeing your point, I&#8217;m starting to thing you&#8217;re trolling for &#8230; I don&#8217;t know what&#8230; traffic? attention? There&#8217;s no interesting debate happening here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ShuggyCoUk</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1490</link>
		<dc:creator><![CDATA[ShuggyCoUk]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 13:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1490</guid>
		<description><![CDATA[But Microsoft markets F# as the new best thing, functional programming für alles.&quot;

never, ever has it done this.

The people that wrote f# admit it&#039;s abilities are better at &#039;programming in the small&#039; rather than writing vast interlinked OO libraries (like say a widget toolkit) but that the in the small bits can be massively powerful and then trivially exposed in most cases to other more conventional .Net languages.

You are putting words in their mouth, this is... disingenuous. You may have a point, but you must argue that point from some reasonable basis.

I have seen *immensely* powerful and useful &#039;scripts&#039; in f# with some decent backing functionality (mix of f# and c#) that utterly removes the need for previous use of statistical analysis toolkits like R/S+. They are faster, 64bit capable, debug-able with VS, much easier to tweak to how the team wants it.

That most of the primary developers were trained in FP from university helps, but the people with no previous FP knowledge now using the system are vastly more productive.]]></description>
		<content:encoded><![CDATA[<p>But Microsoft markets F# as the new best thing, functional programming für alles.&#8221;</p>
<p>never, ever has it done this.</p>
<p>The people that wrote f# admit it&#8217;s abilities are better at &#8216;programming in the small&#8217; rather than writing vast interlinked OO libraries (like say a widget toolkit) but that the in the small bits can be massively powerful and then trivially exposed in most cases to other more conventional .Net languages.</p>
<p>You are putting words in their mouth, this is&#8230; disingenuous. You may have a point, but you must argue that point from some reasonable basis.</p>
<p>I have seen *immensely* powerful and useful &#8216;scripts&#8217; in f# with some decent backing functionality (mix of f# and c#) that utterly removes the need for previous use of statistical analysis toolkits like R/S+. They are faster, 64bit capable, debug-able with VS, much easier to tweak to how the team wants it.</p>
<p>That most of the primary developers were trained in FP from university helps, but the people with no previous FP knowledge now using the system are vastly more productive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Alsing</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1488</link>
		<dc:creator><![CDATA[Roger Alsing]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 08:02:33 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1488</guid>
		<description><![CDATA[Eric Vincent, I think you are misunderstanding me completely.

I&#039;m well aware that there are domain problems that F# solves much better than C#.
But Microsoft markets F# as the new best thing, functional programming für alles.

And in that aspect, it fails, far from everyone will need it.

So what I&#039;m saying is that I don&#039;t get it from the perspective of the MS marketing hype.

It isn&#039;t for everyone, it doesn&#039;t make life easier for the majority of developers.]]></description>
		<content:encoded><![CDATA[<p>Eric Vincent, I think you are misunderstanding me completely.</p>
<p>I&#8217;m well aware that there are domain problems that F# solves much better than C#.<br />
But Microsoft markets F# as the new best thing, functional programming für alles.</p>
<p>And in that aspect, it fails, far from everyone will need it.</p>
<p>So what I&#8217;m saying is that I don&#8217;t get it from the perspective of the MS marketing hype.</p>
<p>It isn&#8217;t for everyone, it doesn&#8217;t make life easier for the majority of developers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Alsing</title>
		<link>http://rogeralsing.com/2009/12/27/i-still-dont-get-f/#comment-1487</link>
		<dc:creator><![CDATA[Roger Alsing]]></dc:creator>
		<pubDate>Thu, 11 Feb 2010 07:55:56 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=716#comment-1487</guid>
		<description><![CDATA[Douglas
&gt;&gt;C# doesn’t make Sense, what can C# do that MSIL can’t do? why do we need C#?

C# let us write considerably less code than if we would write the same code in CIL.

F# doesn&#039;t let us write considerably les code than C#.
It helps on some areas, but IMO, not enough give a better ROI than C# in most cases.


&gt;&gt;Why doesn’t C# do tail recursion? it has been in the BCL since 2.0, improvements have been made in it’s structure with 4.0.

Because you can write itterative algorithms that are easier for normal people to grasp than some recursive beast?]]></description>
		<content:encoded><![CDATA[<p>Douglas<br />
&gt;&gt;C# doesn’t make Sense, what can C# do that MSIL can’t do? why do we need C#?</p>
<p>C# let us write considerably less code than if we would write the same code in CIL.</p>
<p>F# doesn&#8217;t let us write considerably les code than C#.<br />
It helps on some areas, but IMO, not enough give a better ROI than C# in most cases.</p>
<p>&gt;&gt;Why doesn’t C# do tail recursion? it has been in the BCL since 2.0, improvements have been made in it’s structure with 4.0.</p>
<p>Because you can write itterative algorithms that are easier for normal people to grasp than some recursive beast?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

