<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Robert's Strange F# Blog</title><subtitle type="html" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/atom.aspx</id><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/default.aspx" /><link rel="self" type="application/atom+xml" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2006-05-11T21:31:00Z</updated><entry><title>Somasegar Announces Productization of F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/10/17/3762.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/10/17/3762.aspx</id><published>2007-10-17T13:31:00Z</published><updated>2007-10-17T13:31:00Z</updated><content type="html">&lt;P&gt;Somasegar, the head of the Developer Division at Microsoft, has announced the productization of F#. &lt;A href="http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx"&gt;Read more about it here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3762" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>F# on Hansel Minutes</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/08/10/3497.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/08/10/3497.aspx</id><published>2007-08-10T13:54:00Z</published><updated>2007-08-10T13:54:00Z</updated><content type="html">Listen to yours truely bang on about F# for 36 minutes and 22 seconds :)&lt;BR&gt;&lt;A href="http://hanselminutes.com/default.aspx?showID=94"&gt;http://hanselminutes.com/default.aspx?showID=94&lt;/A&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3497" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Foundations of F# - Finally here!</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/06/05/3201.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/06/05/3201.aspx</id><published>2007-06-05T18:56:00Z</published><updated>2007-06-05T18:56:00Z</updated><content type="html">&lt;P&gt;Just a very quick note to say "Foundation of F#" has finally arrived. Am I pleased with it? Make up you own minds:&lt;BR&gt;&lt;A href="http://www.strangelights.com/blog/archive/2007/06/05/1586.aspx"&gt;http://www.strangelights.com/blog/archive/2007/06/05/1586.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3201" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Foundations of F# - First Review</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/05/29/3179.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/05/29/3179.aspx</id><published>2007-05-29T07:17:00Z</published><updated>2007-05-29T07:17:00Z</updated><content type="html">&lt;P&gt;I'm very pleased announce that &lt;A href="http://www.canerten.com/"&gt;Can Erten&lt;/A&gt; has written the first customer review&amp;nbsp;for&amp;nbsp;&lt;A href="http://www.amazon.com/o/ASIN/1590597575/ref=s9_asin_title_1/102-5305736-3745759?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=029Q01R82TYR713M36TB&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=278240701&amp;amp;pf_rd_i=507846"&gt;"Foundations of F#" on amazon.com&lt;/A&gt;, also repeated on &lt;A href="http://www.canerten.com/book-review-foundations-of-f/"&gt;his blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Can writes:&lt;/P&gt;
&lt;P&gt;"&lt;EM&gt;"Foundations of F#" is a great introductory book for F# with some advanced samples. For those who are unfamiliar with functional programming, this book gives the notions of functional programming in all aspects while giving samples in the greatest platform with great language F#. &lt;BR&gt;This book includes functional, imperative and object oriented programming paradigms giving great samples. Robert Pickering also focuses to the imperative programmers by giving the usage differences in F#. He introduces a wide range F# data structures from simple arrays to quotations with great explanations. &lt;BR&gt;This book gives a lot of information on .NET Framework including the latest additions .NET Framework 3.0 and 3.5. Samples with LINQ and Windows Presentation Foundation fulfil this area. If you are unfamiliar with .NET Framework, don't worry this book gives what you need to know about .NET Framework in many different areas including network programming, web programming, database programming, and windows programming with clear and explanatory samples using relevant screenshots. The samples are unique and useful, it's not the examples that you can find on the web, and it's more specialised and focused on techniques specific to F# &lt;BR&gt;Personally I most liked Language Oriented Programming chapter which gives very specific features and usage tricks to F# to make the most of the language. It's a must have book in your bookshelf if you are interested in functional programming on .NET Framework&lt;/EM&gt;"&lt;/P&gt;
&lt;P&gt;I like to say a big thank you to Can for taking the time to do this. &lt;EM&gt;Thanks Can!&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3179" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Foundations of F# - Coming Very Soon</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/05/20/3153.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/05/20/3153.aspx</id><published>2007-05-20T16:16:00Z</published><updated>2007-05-20T16:16:00Z</updated><content type="html">&lt;P&gt;I’m very pleased to announce that Foundations of F# will finish its first printing run on Friday 25th May, two days after my birthday :). It should reach any pre-order customers between 5 to 10 days later, meaning if ordered it on Amazon or Borders (or any other online store), it should be with you before the end of May. A few weeks after that it should start appearing in books stores, at least bookstores that have very big tech departments.&lt;/P&gt;
&lt;P&gt;I have to say I feel very proud to have got this far. There are over 230 code examples coving a large range of topics, so I think most F#ers will find something to interest them. Even advanced users will probably find the chapter on Language Oriented programming or advance interop useful.&lt;/P&gt;
&lt;P&gt;So what are you waiting for? Order a copy today, if you haven’t already:&lt;BR&gt;&lt;A href="http://www.amazon.com/dp/1590597575?tag=strangelights-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1590597575&amp;amp;adid=0F4QKB6A95B2Z4NW1BFN"&gt;http://www.amazon.com/dp/1590597575?tag=strangelights-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1590597575&amp;amp;adid=0F4QKB6A95B2Z4NW1BFN&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3153" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>InfoQ on F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/01/10/1556.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/01/10/1556.aspx</id><published>2007-01-10T14:54:00Z</published><updated>2007-01-10T14:54:00Z</updated><content type="html">The tech news site &lt;A href="http://www.infoq.com"&gt;InfoQ&lt;/A&gt;&amp;nbsp;has a nice article on F# entitled &lt;A href="http://www.infoq.com/news/2007/01/FSharp-Two-Years"&gt;"F#: Two Remarkable Years"&lt;/A&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=1556" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Foundations of F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/10/08/756.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/10/08/756.aspx</id><published>2006-10-08T14:23:00Z</published><updated>2006-10-08T14:23:00Z</updated><content type="html">&lt;P class=NormalVerdana style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; mso-ansi-language: EN-GB"&gt;&lt;FONT face=Verdana&gt;I’ve been keeping pretty quite about this, because it is still a while to publication but I thought I should point out that: my book has been &lt;A href="http://www.apress.com/book/bookDisplay.html?bID=10240"&gt;officially announced on my publisher’s, Apress, website&lt;/A&gt;. It is also available for &lt;A href="http://www.amazon.com/Foundations-F-Robert-Pickering/dp/1590597575/sr=8-1/qid=1160314194/ref=sr_1_1/102-0697493-8936944?ie=UTF8&amp;amp;s=books"&gt;pre-order on amazon.com&lt;/A&gt;, which I highly recommend that you do. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=NormalVerdana style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=NormalVerdana style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; mso-ansi-language: EN-GB"&gt;&lt;FONT face=Verdana&gt;Is there anything more you would like to know about it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=756" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Geoffrey Washburn - F# versus Scala</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/09/06/585.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/09/06/585.aspx</id><published>2006-09-06T17:10:00Z</published><updated>2006-09-06T17:10:00Z</updated><content type="html">&lt;A href="http://existentialtype.net/?page_id=2"&gt;Geoffrey Washburn&lt;/A&gt; has some interesting musings about the &lt;A href="http://existentialtype.net/?p=49"&gt;difference between F# and Scala&lt;/A&gt;, in his blog &lt;A href="http://existentialtype.net/"&gt;Existential Type&lt;/A&gt;&amp;nbsp;which is&amp;nbsp;about&amp;nbsp;typography and logic and type theory. &lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=585" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>SecertGeek.net - 3 minute guide to F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/28/568.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/28/568.aspx</id><published>2006-08-28T07:30:00Z</published><updated>2006-08-28T07:30:00Z</updated><content type="html">Leon Bambrick of the SecertGeek.net has a nice blog entry about F# entitled &lt;A href="http://www.secretgeek.net/fsharp_3mins.asp"&gt;"F# -- the 3 minute guide!"&lt;/A&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=568" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>F# post by Miguel de Icaza</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/17/535.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/17/535.aspx</id><published>2006-08-17T14:20:00Z</published><updated>2006-08-17T14:20:00Z</updated><content type="html">I &lt;A href="http://tirania.org/blog/archive/2006/Aug-17-1.html"&gt;a very brief post on F#&lt;/A&gt; by the founder of the Mono project.&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=535" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>John Lam on F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/08/463.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/08/463.aspx</id><published>2006-08-08T08:11:00Z</published><updated>2006-08-08T08:11:00Z</updated><content type="html">&lt;A href="http://www.iunknown.com"&gt;John Lam&lt;/A&gt; has&amp;nbsp;&lt;A href="http://www.iunknown.com/articles/2006/08/06/i-really-need-to-spend-some-time-with-f"&gt;this nice post on F#&lt;/A&gt;. It is quite short, but has a great picture of Don Syme presenting F#.&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=463" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Blogs on F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/02/454.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/08/02/454.aspx</id><published>2006-08-02T09:50:00Z</published><updated>2006-08-02T09:50:00Z</updated><content type="html">&lt;P&gt;I noticed this nice &lt;A href="http://www.dotnetgeeks.com/blogs/cooperfdiv/archive/2006/07/18/78.aspx"&gt;introductory&amp;nbsp;post on F#&lt;/A&gt; from &lt;A href="http://www.dotnetgeeks.com/blogs/cooperfdiv/"&gt;Dave Cooper&lt;/A&gt;. Although he doesn't say much that hasn't been said elsewhere, lets hope he continues with his posting on F# and goes on to talk about his experinces with it.&lt;/P&gt;
&lt;P&gt;I also noticed &lt;A href="http://blogs.msdn.com/rherb/archive/2006/06/11/626145.aspx"&gt;this nice&amp;nbsp;post&lt;/A&gt; from the noted F# fan&amp;nbsp;&lt;A class=headermaintitle id=bp___v___bt___BlogTitle href="http://blogs.msdn.com/rherb/default.aspx"&gt;Ralf Herbrich, &lt;/A&gt;its all about using F# and the IEnumerator with SQL queries.&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=454" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>Bending the Cat: F# meets WPF 3D </title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/23/389.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/23/389.aspx</id><published>2006-06-23T08:21:00Z</published><updated>2006-06-23T08:21:00Z</updated><content type="html">See it at &lt;A href="http://strangelights.com/blog/archive/2006/06/23/1309.aspx"&gt;my other blog&lt;/A&gt;.&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=389" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>C# style continuations in F# - yet another referral</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/15/357.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/15/357.aspx</id><published>2006-06-15T20:52:00Z</published><updated>2006-06-15T20:52:00Z</updated><content type="html">This time to &lt;A href="http://strangelights.com/blog/archive/2006/06/15/1308.aspx"&gt;my other blog&lt;/A&gt;.&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=357" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>FireBird and F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/05/336.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/06/05/336.aspx</id><published>2006-06-05T12:44:00Z</published><updated>2006-06-05T12:44:00Z</updated><content type="html">&lt;A href="http://www.markstaples.com"&gt;Mark Staples&lt;/A&gt; has &lt;A href="http://www.markstaples.com/2006/06/05/f-sample-events-and-net-firebird/"&gt;this nice post&lt;/A&gt; on using &lt;A href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt; with a &lt;A href="http://firebird.sourceforge.net/"&gt;Fire Bird database&lt;/A&gt;. While its not dissimilar to the &lt;A href="http://www.strangelights.com/fsharp/Wiki/default.aspx/FSharpWiki.FSharpOleDb"&gt;OleDb example&lt;/A&gt; available on the &lt;A href="http://www.strangelights.com/fsharp/Wiki"&gt;F# wiki&lt;/A&gt;, it's nice as&amp;nbsp;Mark's example&amp;nbsp;links the database to&amp;nbsp;a GUI and he provides a great explication of the code.&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=336" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>In the key of F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/05/18/263.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/05/18/263.aspx</id><published>2006-05-18T21:18:00Z</published><updated>2006-05-18T21:18:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;While I’m aware that my &lt;A href="http://strangelights.com/blog/archive/2006/05/11/1302.aspx"&gt;last posting&lt;/A&gt; could do with a fair bit of explanation for it to be really useful, I’m not in the mood to do that right now so thought I’d show something cute.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I was searching for something work related when I came across &lt;A href="http://msdn2.microsoft.com/en-us/library/4fe3hdb1.aspx"&gt;this sample&lt;/A&gt; in MSDN which I thought was quite cute so I decided to port it to F#. The sample plays “Mary had a Little Lamb” thought the console beeper.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Well here it is:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;type&lt;/SPAN&gt; tone =&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; REST&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GbelowC&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Asharp&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Csharp&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dsharp&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; E&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; F&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fsharp&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; G&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gsharp &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;type&lt;/SPAN&gt; duration =&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHOLE&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HALF&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; QUARTER&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EIGHTH&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIXTEENTH&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;let&lt;/SPAN&gt; convert_tone t&amp;nbsp; =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;match&lt;/SPAN&gt; t &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;with&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; REST&amp;nbsp;&amp;nbsp; -&amp;gt; 0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GbelowC&amp;nbsp;&amp;nbsp; -&amp;gt; 196&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp; -&amp;gt; 220&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Asharp&amp;nbsp;&amp;nbsp; -&amp;gt; 233&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp; -&amp;gt; 247&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp; -&amp;gt; 262&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Csharp&amp;nbsp;&amp;nbsp; -&amp;gt; 277&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp; -&amp;gt; 294&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dsharp&amp;nbsp;&amp;nbsp; -&amp;gt; 311&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; E&amp;nbsp;&amp;nbsp; -&amp;gt; 330&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; F&amp;nbsp;&amp;nbsp; -&amp;gt; 349&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fsharp&amp;nbsp;&amp;nbsp; -&amp;gt; 370&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; G&amp;nbsp;&amp;nbsp; -&amp;gt; 392&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gsharp&amp;nbsp;&amp;nbsp; -&amp;gt; 415 &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;let&lt;/SPAN&gt; convert_duration d =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;match&lt;/SPAN&gt; d &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;with&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHOLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 1600&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HALF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 800&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; QUARTER&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 400&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EIGHTH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 200&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIXTEENTH&amp;nbsp; -&amp;gt; 100&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;let&lt;/SPAN&gt; mary =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GbelowC, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B, HALF;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A, HALF;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; D, QUARTER;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; D, HALF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;let&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;rec&lt;/SPAN&gt; play tune =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;match&lt;/SPAN&gt; tune &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;with&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; head :: tail -&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;begin&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;match&lt;/SPAN&gt; head &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;with&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; REST, d&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp; System.Threading.Thread.Sleep(convert_duration d)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; t, d&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp; System.Console.Beep(convert_tone t, convert_duration d)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;end&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; play tail&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;|&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; [] -&amp;gt; ()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;do&lt;/SPAN&gt; play mary&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;One thing that is slightly annoying about the sample is that the C# version is a good bit shorter. This is because C# has the concept of enums, that F# does not support. How the reason that F# does not support enums is because they are a bit dodgy, by this I mean C# will allow us to just cast any old int into an enum even if it is not a member of the enum. See what I mean:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;class&lt;/SPAN&gt; Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;enum&lt;/SPAN&gt; Duration&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHOLE &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; 1600,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HALF &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; WHOLE &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;/&lt;/SPAN&gt; 2,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QUARTER &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; HALF &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;/&lt;/SPAN&gt; 2,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EIGHTH &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; QUARTER &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;/&lt;/SPAN&gt; 2,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIXTEENTH &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; EIGHTH &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;/&lt;/SPAN&gt; 2,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;static&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;string&lt;/SPAN&gt;[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Duration d &lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; (Duration)1232; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Lucida Console; BACKGROUND-COLOR: transparent"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;F# gives us its union type which is similar to enums but more powerful. However enums do one thing that union type can’t; you can directly associate an integer value with an enum, you can't do this with a union type. However after reflecting on this for a bit maybe this abstraction is a good thing. For example it would be trivial to create anther “convert_tone” function that mapped the tone type to another octave, you could then parameterise the “play” function to accept the a convert_tone function which then allows you to play your tune in any octave you whish. Well with in the limits of the consoles beep functionality!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=263" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry><entry><title>A simple parser in F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/05/11/251.aspx" /><id>http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2006/05/11/251.aspx</id><published>2006-05-11T19:31:00Z</published><updated>2006-05-11T19:31:00Z</updated><content type="html">&lt;P&gt;I thought I should finally post something here!&lt;/P&gt;
&lt;P&gt;But I've also been neglecting my other blog, so I'll just make this post a reference to the post I made there today:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://strangelights.com/blog/archive/2006/05/11/1302.aspx"&gt;http://strangelights.com/blog/archive/2006/05/11/1302.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=251" width="1" height="1"&gt;</content><author><name>Robert</name><uri>http://cs.hubfs.net/members/Robert.aspx</uri></author></entry></feed>