<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Heart of Sharpness (The MSR F# Team's blog at The Hub)</title><subtitle type="html">The MSR F# Team's blog at The Hub</subtitle><id>http://cs.hubfs.net/blogs/f_team/atom.aspx</id><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/default.aspx" /><link rel="self" type="application/atom+xml" href="http://cs.hubfs.net/blogs/f_team/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2006-05-03T02:00:00Z</updated><entry><title>Investing in F# - Making the tools and language better still</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2008/07/26/6448.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2008/07/26/6448.aspx</id><published>2008-07-26T16:50:00Z</published><updated>2008-07-26T16:50:00Z</updated><content type="html">&lt;P&gt;The F# team at Microsoft Research and Microsoft are currently working hard&amp;nbsp;towards our planned&amp;nbsp;&lt;A href="http://blogs.msdn.com/dsyme/archive/2008/04/04/tackling-the-f-productization.aspx"&gt;CTP release of F#&lt;/A&gt;. This is a follow up to the &lt;A href="http://blogs.msdn.com/dsyme/archive/2008/05/02/f-1-9-4-now-available-making-f-simpler-and-more-consistent.aspx"&gt;1.9.4&lt;/A&gt; release of F# as a research language.&lt;/P&gt;
&lt;P&gt;When it comes, this&amp;nbsp;release will be the first release that includes signficant&amp;nbsp;improvements in the Visual Studio tools. &lt;A href="http://lorgonblog.spaces.live.com/"&gt;Brian McNamara&lt;/A&gt; has been posting &lt;A href="http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!282.entry"&gt;a few sneak screen shots of the project system in Visual Studio&lt;/A&gt;.&amp;nbsp;Watch Brian's blog for more!&lt;/P&gt;
&lt;P&gt;The project system isn't the only thing we're doing: we've done an end-to-end design review, some results&amp;nbsp;of which appeared in 1.9.4, we've got improvements to F# Interactive in Visual Studio, and there are&amp;nbsp;other&amp;nbsp;improvements across the board, as well as some great new productivity features. We look forward to your feedback when we role this release out, and we know it will make your use of F# more productive still.&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=6448" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Software Development Engineer Positions on the F# team!</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/10/30/3900.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/10/30/3900.aspx</id><published>2007-10-30T22:51:00Z</published><updated>2007-10-30T22:51:00Z</updated><content type="html">&lt;P&gt;The F# team is &lt;A href="http://members.microsoft.com/careers/search/details.aspx?JobID=5DF7A6AB-80C5-41CB-9A8D-5B344C33AE1D"&gt;hiring&lt;/A&gt;! We have two positions open right now. The first is a &lt;A href="http://members.microsoft.com/careers/search/details.aspx?JobID=5DF7A6AB-80C5-41CB-9A8D-5B344C33AE1D"&gt;software development engineer&lt;/A&gt; specializing in Visual Studio and libraries.&amp;nbsp; The second is a &lt;A href="http://members.microsoft.com/careers/search/details.aspx?JobID=B36FFEB2-4C11-4B9C-9B3F-5B23CC604A7B&amp;amp;start=1&amp;amp;interval=10&amp;amp;SortCol=DatePosted"&gt;software development engineer in test&lt;/A&gt;. Some extracts from the job description for the first:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;We’re looking for an exceptional developer to work on integration with the Visual Studio editor and debugger, and with Technical Computing libraries. You will be a key designer/engineer on our team, responsible for significant architecture investments, implementing key features, and participating in language design. You will be working with very strong architects, engineers and researchers, often working across organizational boundaries and with the developer community. &lt;BR&gt;&lt;BR&gt;To be successful on this team, you should possess rock solid design and development skills. You should have a strong track record of shipping secure, high quality software through all phases of the product cycle and have demonstrated successes in cross team partnerships. The ideal candidate will have 6 or more years of experience designing/shipping developer tools, strong functional (F#/Haskell/OCaml), C# and C++ coding skills, and a good understanding of Technical Computing. A MS or PhD degree in Computer Science or a related technical field is preferred. &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The &lt;A href="http://members.microsoft.com/careers/search/details.aspx?JobID=5DF7A6AB-80C5-41CB-9A8D-5B344C33AE1D"&gt;full details of the position&lt;/A&gt; are up on the Microsoft site, along with how to apply. (The job is listed as "C# team" because the F# team is a small team in the C# org). The location&amp;nbsp;listed is "Redmond", but we'd be open to people looking to work in Cambridge UK for some of the time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3900" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Juergen van Gael on Asynchronous Workflows</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/10/18/3774.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/10/18/3774.aspx</id><published>2007-10-18T21:55:00Z</published><updated>2007-10-18T21:55:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;[ During the summer the F# team at MSR Cambridge had the pleasure of having &lt;/EM&gt;&lt;A href="http://mlg.eng.cam.ac.uk/jurgen/"&gt;&lt;EM&gt;Juergen van Gael&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; working with us, prior to his starting a PhD at the University of Cambridge. Juergen looked at three topics: probabilisitic modelling with F#, some machine learning algorithms with the APG team, and topics in math libary support for F#.&amp;nbsp; &lt;/EM&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;Before he left Juergen wrote up his expereiences of using asynchronous workflows to parallelize some math algorithms. Here's his write up! &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;One caveat: asynchronous workflows can be used to do some simple CPU-intensive parallelizations, but have some overheads because at each step of the way we have to cater for the fact that tasks may be &lt;U&gt;asynchronous&lt;/U&gt;, and this often means using operating system synchronization resources ("WaitHandles") along the way. Libraries like &lt;/EM&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/07/10/futures/default.aspx"&gt;&lt;EM&gt;Parallel FX Futures&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;will have great functionality for scheduling lots of &lt;U&gt;synchronous&lt;/U&gt; tasks, like many of the ones used below. Juergen wrote this up before we could really make heavy us of Parallel FX so his write up doesn't mention them.&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;Basically, I'd say that as these technologies become widely used&amp;nbsp;you should assess the characteristics of your tasks and use the right scheduling machinery for the job. Do your tasks need to perform non-blocking network&amp;nbsp;or disk I/O? Then the .NET thread pool will likely have to be used in some way, because that's largely how .NET asynchronous I/O works, and F# asynchronous workflows are a reasonable way of doing this kind of programming. Are they simple synchronous computational tasks? Then Parallel FX Futures look like&amp;nbsp;the right machinery there. &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;Anyway, over to Juergen! ]&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;I want to draw your attention to a feature of F# that I’ve become to like very much: asynchronous workflows. As a machine learning researcher, I often run into the scenario where I need to read in a lot of data, run a number of independent tasks (potentially in parallel) and later compute some aggregate information. A very recent example required me to compute optimal parameters for a classifier; unfortunately I could not compute gradient information and decided to brute force search over a parameter grid. Evaluating the classifier for every parameter is independent of all other evaluations though and could be done in parallel. Although asynchronous workflows are designed for other purposes, they allow you to do just this. Asynchronous workflows are a mechanism in F# to setup a computation by describing small tasks and how these tasks depend on each other. The feature that got me excited was that it is extremely simple to describe parallel tasks. Onto an example!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;One way to picture an asynchronous workflows is as a directed acyclic graph where every node describes a simple computation: in F# this is represented as an &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Async&amp;lt;’a&amp;gt; &lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;task.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face="Courier New" size=3&gt;V1 = Z*Z&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\&lt;BR&gt;V2 = sin(Z)&amp;nbsp;&amp;nbsp;&amp;nbsp; ---&lt;/FONT&gt;&lt;FONT face="Courier New" size=3&gt;--&amp;gt;&amp;nbsp; R = V1 + V2 + V3&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;BR&gt;V3 = log(Z) ---/ &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: center" align=center&gt;&lt;SPAN style="mso-no-proof: yes; mso-fareast-language: EN-GB"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;The graph above shows a simple numerical computation which could be described with asynchronous workflows. Assume Z has some value prior to executing the computation in the graph above. It should be clear that the computations of the three v’s are independent and can be done in parallel; only after all three are computed the computation can proceed by computing R. The code snippet below shows how to describe the workflow in F#:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;#light&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; evals =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;let&lt;/SPAN&gt; z = 4.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[ async { &lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; printf &lt;SPAN style="COLOR: #a31515"&gt;"Computing z*z\n"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; z * z };&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;async { &lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; printf &lt;SPAN style="COLOR: #a31515"&gt;"Computing sin(z)\n"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (sin z) };&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;async { &lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; printf &lt;SPAN style="COLOR: #a31515"&gt;"Computing log(z)\n"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (log z) } ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; awr =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;async { &lt;SPAN style="COLOR: blue"&gt;let!&lt;/SPAN&gt; vs = Async.Parallel evals&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; printf &lt;SPAN style="COLOR: #a31515"&gt;"Computing v1+v2+v3\n"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (Array.fold_left (&lt;SPAN style="COLOR: blue"&gt;fun&lt;/SPAN&gt; a b &lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; a + b) 0.0 vs) }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; R = Async.Run awr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;printf &lt;SPAN style="COLOR: #a31515"&gt;"Result = %f\n"&lt;/SPAN&gt; R&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;First we initialize a variable &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;evals &lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;which references a list of asynchronous computation each &lt;I style="mso-bidi-font-style: normal"&gt;describing&lt;/I&gt; the computation of one v. It is important to note that no numerical computation is done at this point: we are just setting up the computation. Next we build another computation (&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;awr&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;) as a workflow by using the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Async.Parallel &lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;construct. This construct takes a sequence of asynchronous workflows, schedules all of them in parallel, waits for the results and returns those packaged in a list of &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Async&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt; &lt;/SPAN&gt;types. In the &lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;awr&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt; expression, we bind variable &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;vs &lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;to the contents of the &lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Async&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN&gt; &lt;/SPAN&gt;type returned by the parallel computations. Again, I want to stress that at this point we have only setup the computation. Only when we execute &lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Async.Run &lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;do we commit the runtime to evaluate the whole workflow and wait for its results. On my machine this results in the following output:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Computing z*z&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Computing sin(z)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Computing log(z)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Computing v1+v2+v3&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Result = 16.629492&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt; TEXT-ALIGN: justify"&gt;&lt;FONT face=Calibri size=3&gt;Although the computation we setup and executed above is trivial I hope I conveyed to you that asynchronous workflows are an interesting way to describe a parallel computation. Here is a possible implementation of a parallel matrix multiplication using asynchronous workflows. Note that in this example we chose to parallelize the computation of rows, but different granularities are possible. (Do not consider this to be a high performance, parallel matrix multiplication but rather as a workflow example.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;open&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; Microsoft.FSharp.Collections&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; ParallelMultiply A B =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;let&lt;/SPAN&gt; n = Array2.length1 A&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;let&lt;/SPAN&gt; C = Array2.create n n 0.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;let&lt;/SPAN&gt; RowTask i =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;async { &lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; j=0 &lt;SPAN style="COLOR: blue"&gt;to&lt;/SPAN&gt; n-1 &lt;SPAN style="COLOR: blue"&gt;do&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; k=0 &lt;SPAN style="COLOR: blue"&gt;to&lt;/SPAN&gt; n-1 &lt;SPAN style="COLOR: blue"&gt;do&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;C.[i,j] &amp;lt;- C.[i,j] + A.[i,k] * B.[k,j]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;do&lt;/SPAN&gt; printf &lt;SPAN style="COLOR: #a31515"&gt;"Computing row %d\n"&lt;/SPAN&gt; i&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;let&lt;/SPAN&gt; p = Async.Parallel [ &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; i &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; [0..n-1] &lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; RowTask i ] |&amp;gt; Async.Ignore&lt;SPAN style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Async.Run p&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;C&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; n = 4&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; rnd = System.Random()&lt;SPAN style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; A = Array2.init n n (&lt;SPAN style="COLOR: blue"&gt;fun&lt;/SPAN&gt; i j &lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; rnd.NextDouble())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; B = Array2.init n n (&lt;SPAN style="COLOR: blue"&gt;fun&lt;/SPAN&gt; i j &lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; rnd.NextDouble())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;printf &lt;SPAN style="COLOR: #a31515"&gt;"%A\n"&lt;/SPAN&gt; A&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;printf &lt;SPAN style="COLOR: #a31515"&gt;"%A\n"&lt;/SPAN&gt; B&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt; C = ParMult A B&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-ansi-language: EN-US"&gt;printf &lt;SPAN style="COLOR: #a31515"&gt;"%A\n"&lt;/SPAN&gt; C&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3774" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>CUFP Workshop 2007 - Featuring F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/08/21/3548.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/08/21/3548.aspx</id><published>2007-08-21T17:09:00Z</published><updated>2007-08-21T17:09:00Z</updated><content type="html">&lt;P&gt;The program for the 2007 Commercial Users of Functional Programming workshop is now published.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://cufp.galois.com/"&gt;http://cufp.galois.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The workshop is co-located with ICFP, and will be held in Freiburg, Germany, on 4 October 2007.&amp;nbsp; We had a terrific response to our call for talks, and there are twelve (!) speakers describing commercial applications,&amp;nbsp; variously written in&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Caml&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Erlang&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; F#&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Haskell&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ML&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scheme&lt;/P&gt;
&lt;P&gt;The talks are informal, and there are no proceedings.&amp;nbsp; We'll just have fun learning about functional programming used to solve real problems.&amp;nbsp; Do come!&lt;/P&gt;
&lt;P&gt;Don Syme&lt;BR&gt;Kathleen Fisher&lt;BR&gt;Simon Peyton Jones&lt;BR&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3548" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# 1.9.1.9 released</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/05/06/3065.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/05/06/3065.aspx</id><published>2007-05-06T01:42:00Z</published><updated>2007-05-06T01:42:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://blogs.msdn.com/dsyme/archive/2007/05/06/f-1-9-1-9-available-currently-msi-only-includes-overloaded-numeric-conversion-functions-and-checked-arithmetic.aspx"&gt;F# 1.9.1.9 &lt;/A&gt;has been released by the F# team. To quote:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-GB; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&lt;EM&gt;This is in general a bug fix release over &lt;/EM&gt;&lt;A class="" href="http://blogs.msdn.com/dsyme/archive/2007/04/06/f-1-9-1-released.aspx"&gt;&lt;EM&gt;1.9.1.8&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;, with some exceptions&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;We've added&amp;nbsp;two great new features: &lt;BR&gt;&lt;/EM&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;&lt;B&gt;Overloaded numeric conversion functions&lt;/B&gt;. The functions &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;float&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;float32&lt;/FONT&gt;&lt;/STRONG&gt; etc. now overloaded conversion operators.&lt;/B&gt; For example, you can replace &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Int32.of_float&lt;/FONT&gt;&lt;/STRONG&gt; and &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Int32.of_int64&lt;/FONT&gt;&lt;/STRONG&gt; and all similar operators that convert to &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;&lt;/STRONG&gt; by just &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;&lt;/STRONG&gt; (or &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int32&lt;/FONT&gt;&lt;/STRONG&gt;, which is equivalent). Likewise for &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;sbyte&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;byte&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int16&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;uint16&lt;/FONT&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int32&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;uint32&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;int64&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;uint64&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;nativeint&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;unativeint&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;float&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;float32&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;single&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;double&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;BR&gt;&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;&lt;B&gt;Checked arithmetic&lt;/B&gt; Open &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Microsoft.FSharp.Core.Operators.Checked&lt;/FONT&gt;&lt;/STRONG&gt; to get checked arithmetic versions of &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;+, -, *&lt;/FONT&gt;&lt;/STRONG&gt; and the above conversion operators. &lt;BR&gt;&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;EM&gt;We've &lt;STRONG&gt;updated the FLinq sample&lt;/STRONG&gt; The FLinq sample has been updated to use the technique outline in Don Syme's ML Workshop LINQ paper from 2006. More details to follow in blog entries. &lt;BR&gt;&lt;/EM&gt;
&lt;LI&gt;&lt;EM&gt;We've moved to an MSI installer for this release. This is to fix numerous installation problems with the previous Zip based installer. We will be making a ZIP available for Mono users of the compiler in due course&lt;BR&gt;&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=3065" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Some Q&amp;amp;A on F# Quotations and LINQ</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/04/07/2662.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/04/07/2662.aspx</id><published>2007-04-07T08:48:00Z</published><updated>2007-04-07T08:48:00Z</updated><content type="html">&lt;P&gt;On the F# List Roshan James recently asked some good questions about F# quotations. I thought I'd record them here along with my answers.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;-----------&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;Hi Roshan,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;FONT face=Consolas&gt;Can I evaluate a &amp;lt;@@ 1 + 2 @@&amp;gt; term to value?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;The primary rationale for quotations is to allow fragments of F# syntax to be executed "by alternative means", e.g. as an SQL query via LINQ or by running on a GPU. This is the same rationale as C# LINQ Expression trees.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We want to leverage heavy-hitting components that map subsets of functional programs to other execution machinery.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Another example might be executing a subset of F# array code by dynamic generation of Fortran code, invocation of a vectorizing Fortran compiler and loading and invoking the resulting DLL dynamically. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;The FLinq sample is the primary example of this.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;From academic point you might call this "offshoring staged computation".&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is discussed in my paper at &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://research.microsoft.com/~dsyme/papers/ml03-syme.pdf"&gt;&lt;FONT face="Times New Roman" color=#0000ff size=3&gt;http://research.microsoft.com/~dsyme/papers/ml03-syme.pdf&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;As an example, we have recently been re-working the SQL portion of the F# FLinq sample. This builds on top of the reworked quotations API in the 1.9.1 release (&lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/dsyme/archive/2007/04/06/f-1-9-1-released.aspx"&gt;&lt;FONT size=3&gt;http://blogs.msdn.com/dsyme/archive/2007/04/06/f-1-9-1-released.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It now uses a combination of F# Quotations and LINQ to implement what a dynamic evaluator for Expr&amp;lt;’a&amp;gt; expressions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;val SQL : Expr&amp;lt;'a&amp;gt; -&amp;gt; 'a&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;You can then execute a subset of Expr&amp;lt;’a&amp;gt; values as database queries – some examples are shown below.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We’ll release this new sample in the next couple of weeks, and you can also play around with the current FLinq sample that does things a bit differently.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SQL &amp;lt;@ { &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; c &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; (§db.Customers) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;when&lt;/SPAN&gt; c.City = &lt;SPAN style="COLOR: #a31515"&gt;"London"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; c } @&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SQL &amp;lt;@ { &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; e &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; (§db.Employees)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; e.FirstName + &lt;SPAN style="COLOR: #a31515"&gt;" "&lt;/SPAN&gt; + e.LastName, e.HomePhone } @&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SQL &amp;lt;@ { &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; c &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; (§db.Customers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; (c.CustomerID,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(c.CompanyName, c.City, c.Country),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(c.ContactName, c.ContactTitle)) } @&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SQL &amp;lt;@ { &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; e &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; (§db.Employees)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; et &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; e.EmployeeTerritories&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;when&lt;/SPAN&gt; e.City = &lt;SPAN style="COLOR: #a31515"&gt;"Seattle"&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;-&amp;gt;&lt;/SPAN&gt; (e.FirstName, e.LastName, et.Territory.TerritoryDescription) } @&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;All of this means we're not (yet) particularly interested in executing quotations as F# code on the CPU of the local machine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is initially counter-intuitive to those steeped in Lisp, Scheme or staged computation, but usually the SQL sample helps people see the point.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;You can compile/interpret on the CPU if you are willing to write your own interpreter or dynamic compiler for the expression trees, or translate expression fragments to LINQ and use their (somewhat limited) dynamic compiler.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is also covered briefly in the paper above.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;I'm also pretty certain we will eventually support using the F# compiler to “eval” quotations, but we don’t do that yet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;FONT face=Consolas&gt;Can I effectively ToString a quotation?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;Printing is considerably better supported in the 1.9.1 release, though is not perfect. You may need to write your own pretty printer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;FONT face=Consolas&gt;Can I introduce new syntax using a &amp;lt;@@ @@&amp;gt; term somehow? &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;No, this is not what quotations are for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;FONT face=Consolas&gt;Finally, is the diffrence between &amp;lt;@ .. @&amp;gt; and &amp;lt;@@ ... @@&amp;gt; only &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt"&gt;&lt;FONT face=Consolas&gt;that the former is not run&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;Type inference applies to both. The only difference between the two is that the type from the surrounding context is not propagated through the type checking of the &amp;lt;@@ @@&amp;gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;expression. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;Don&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=2662" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# 1.9.1 Released!</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2007/04/06/2659.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2007/04/06/2659.aspx</id><published>2007-04-06T22:47:00Z</published><updated>2007-04-06T22:47:00Z</updated><content type="html">&lt;P&gt;F# 1.9.1 &lt;A href="http://research.microsoft.com/research/downloads/details/b46c7032-149c-4da3-a027-7768210a158d/details.aspx"&gt;has been released&lt;/A&gt;!&amp;nbsp; The 1.9.1.9 &lt;A href="http://research.microsoft.com/research/downloads/details/c8d270ce-dc93-4b82-8125-2c57036520b3/details.aspx"&gt;download is available at this link.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I've posted the &lt;A class="" href="http://blogs.msdn.com/dsyme/archive/2007/04/06/detailed-release-notes-for-1-9-1-8.aspx"&gt;full release notes&lt;/A&gt; in another blog entry.&amp;nbsp;The highlights in this release are:&lt;/P&gt;
&lt;LI&gt;&lt;STRONG&gt;Active Patterns&lt;/STRONG&gt;.&amp;nbsp; Active patterns give a form of extensible pattern matching on abstract values. F# active patterns allow you to pattern match against .NET object values such as XML, System.Type values and LINQ Expression trees. In this redesigned version they become an official part of the language and some novel additions give a lightweight and non-intrusive mechanism to both partial patterns, parameterized patterns and "complete" decompositions (views) of types. &lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Implicit Class Construction&lt;/STRONG&gt;.&amp;nbsp; This lovely feature makes writing classes considerably more succinct and helps to further bridge the gap between type-inferred functional programming and object-oriented programming. &lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Simpler Quotation Library&lt;/STRONG&gt;.&amp;nbsp; The F# Quotation library has been redesigned to use active patterns and to have a much simpler model of types, and as such is now much more powerful.&amp;nbsp; F# Quotations are used to interoperate with &lt;A class="" href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt;, &lt;A class="" href="http://portal.acm.org/citation.cfm?id=1168898&amp;amp;dl=ACM&amp;amp;coll=&amp;amp;CFID=15151515&amp;amp;CFTOKEN=6184618"&gt;Accelerator&lt;/A&gt; and other meta-programming components.&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Methods as first-class values&lt;/STRONG&gt;.&amp;nbsp; You can now use .NET methods as functions in many situations, e.g. "map File.ReadAllLines ["a.txt"; "b.txt"]"&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Attributes for C Interoperability.&lt;/STRONG&gt;&amp;nbsp; StructLayout, FieldLayout etc. now supported&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Better IntelliSense&lt;/STRONG&gt;.&amp;nbsp; IntelliSense on more expressions, more information in ToolTips.&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Syntactic improvements, Bug fixes, Library additions and much more&lt;/STRONG&gt;.&amp;nbsp; A whole bunch of things here - more detail &lt;A class="" href="http://blogs.msdn.com/dsyme/archive/2007/04/06/detailed-release-notes-for-1-9-1-8.aspx"&gt;in the release notes&lt;/A&gt; 
&lt;P&gt;Have fun!&lt;/P&gt;
&lt;P&gt;don&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=2659" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Posted by Andyman: HDFS - Hardware design using F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/12/07/1203.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/12/07/1203.aspx</id><published>2006-12-07T18:07:00Z</published><updated>2006-12-07T18:07:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face="Times New Roman" size=3&gt;View the complete topic at: &lt;/FONT&gt;&lt;A href="/forums/thread/1202.aspx"&gt;&lt;FONT face="Times New Roman" color=#800080 size=3&gt;http://cs.hubfs.net/forums/thread/1202.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt; &lt;BR&gt;&lt;BR&gt;Posted By: Andyman in Applications of F# &lt;BR&gt;Subject: HDFS - Hardware design using F# &lt;BR&gt;__________________________________ &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;HDFS is a library written in F# which allows hardware to be designed, simulated and then implemented (using standard design flows via Verilog or VHDL) in FPGA's or ASIC's.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://www.evilkid.pwp.blueyonder.co.uk/"&gt;&lt;FONT face="Times New Roman" color=#800080 size=3&gt;http://www.evilkid.pwp.blueyonder.co.uk/&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Digital logic circuit design in F#&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Structural and behavioural design styles&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;VHDL and Verilog netlist generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Memory inference&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Instantiation of external HDL models&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Integrated simulator&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Verilog co-simulation (Modelsim only at the moment)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;C, C++ and C# simulation generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Integrated waveform viewer&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Resource reporting&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Tree based hierarchy viewer&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Small, but growing, library of utility circuits and functions&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-GB; mso-fareast-language: EN-GB; mso-bidi-language: AR-SA"&gt;&lt;BR&gt;The library is based upon a project called HDCaml, authored by Tom Hawkins.&amp;nbsp; For more information on HDCaml see:&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.confluent.org/wiki/doku.php"&gt;http://www.confluent.org/wiki/doku.php&lt;/A&gt;&lt;BR&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;/SPAN&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=1203" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# helps show we're not Neanderthals</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/12/05/1136.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/12/05/1136.aspx</id><published>2006-12-05T23:38:00Z</published><updated>2006-12-05T23:38:00Z</updated><content type="html">&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Well, sort of :-)&amp;nbsp;One&amp;nbsp;of our most recent scientific users of F# is &lt;/EM&gt;&lt;/FONT&gt;&lt;A class="" href="http://www.jgi.doe.gov/whoweare/platt.html"&gt;&lt;EM&gt;Darren Platt&lt;/EM&gt;&lt;/A&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;, head of computational genomics at the &lt;/EM&gt;&lt;/FONT&gt;&lt;A class="" href="http://www.jgi.doe.gov/"&gt;&lt;EM&gt;DOE Joint Genome Institute&lt;/EM&gt;&lt;/A&gt;&lt;FONT color=#000080&gt;&lt;EM&gt; (they sequence something like 20% of the world’s DNA - here are the &lt;/EM&gt;&lt;/FONT&gt;&lt;A class="" href="http://www.jgi.doe.gov/sequencing/statistics.html"&gt;&lt;EM&gt;stats&lt;/EM&gt;&lt;/A&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;). Darren&amp;nbsp;is a co-author of the recent stunning paper on &lt;/EM&gt;&lt;/FONT&gt;&lt;A title=http://www.sciencemag.org/cgi/content/short/314/5802/1113 href="http://www.sciencemag.org/cgi/content/short/314/5802/1113"&gt;&lt;EM&gt;Neanderthal DNA&lt;/EM&gt;&lt;/A&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;&amp;nbsp;(see screen shots below),&amp;nbsp;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Read the full blog post at &lt;A href="http://blogs.msdn.com/dsyme/archive/2006/12/06/using-fsharp-to-help-show-we-re-not-neanderthals.aspx"&gt;http://blogs.msdn.com/dsyme/archive/2006/12/06/using-fsharp-to-help-show-we-re-not-neanderthals.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=1136" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# 1.1.13 now available</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/11/30/1016.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/11/30/1016.aspx</id><published>2006-11-30T01:41:00Z</published><updated>2006-11-30T01:41:00Z</updated><content type="html">F# 1.1.13.8 has just been posted, the first external release of F# 1.1.13, and is available for download from http://research.microsoft.com/fsharp/release.aspx. The full announcement is at http://blogs.msdn.com/dsyme/archive/2006/11/30/f-1-1-13-now-available.aspx
Enjoy!
The F# team, MSR Cambridge
Summary of changes
Language Enhancements 

Range Comprehensions. e.g. {1 .. 3} 
IEnumerable, Array and List Comprehensions. 
Named arguments and post-hoc property-setters&amp;nbsp; 
'for' loops over...(&lt;a href="http://cs.hubfs.nethttp://cs.hubfs.net/blogs/f_team/archive/2006/11/30/1016.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=1016" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Three machine learning experts, F# Interactive, IEnumerable, a Terabyte of data and XBox Live...</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/11/22/918.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/11/22/918.aspx</id><published>2006-11-22T10:04:00Z</published><updated>2006-11-22T10:04:00Z</updated><content type="html">&lt;DIV class=post&gt;
&lt;DIV class=postsub&gt;
&lt;P&gt;&lt;EM&gt;Cross posted from &lt;/EM&gt;&lt;A href="http://blogs.msdn.com/dsyme/archive/2006/11/22/three-machine-learning-experts-f-interactive-ienumerable-a-terabyte-of-data-and-xbox-live.aspx"&gt;&lt;EM&gt;http://blogs.msdn.com/dsyme/&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.technet.com/apg/about.aspx"&gt;Ralf, Phil and Thore&lt;/A&gt; in the MSR Cambridge Applied Games Group have been continuing their work using F# in conjunction with the &lt;A class="" href="http://www.xbox.com/en-GB/live"&gt;XBox Live team&lt;/A&gt;.&amp;nbsp; Ralf amazes me with the ease with which he switches between sophisticated probabilistic modelling&amp;nbsp;to writing stored procedures in C#, then back to F# Interactive to crank out another great tool or algorithm. They use F# Interactive to&amp;nbsp;test and script their algorithms&amp;nbsp;interactively, and they deliver the programs&amp;nbsp;to the Xbox Live team as a standalone binaries.&lt;/P&gt;
&lt;P&gt;Ralf is very keen to get across how they work with F#, since the techniques are very general and reusable.&amp;nbsp; For example, he describes&lt;A class="" href="http://blogs.technet.com/apg/archive/2006/11/04/dealing-with-terabytes-with-f.aspx"&gt;&amp;nbsp;using IEnumerable in conjunction with F# Interactive&lt;/A&gt;: they can develop their algorithms using IEnumerables set up to read their entire data set, a whopping 1TB in total to process, but easily use IEnumerable combinators to map, fold, filter and truncate the streams.&amp;nbsp; To me that's a natural consequence of the beauty of functional programming on top of a platform like .NET.&amp;nbsp; But that's the real joy of programming languages: taking the tedium out of complex transformations and analyses, and developing a simple set of compositional primitives that work together.&lt;/P&gt;
&lt;P&gt;Do you know why &lt;A class="" href="http://blogs.technet.com/apg/archive/2006/11/05/team-play-in-trueskill.aspx"&gt;TrueSkill lets you play with your friends&amp;nbsp;not against them&lt;/A&gt;, or have you heard about Mykel Kochenderfer's &lt;A class="" href="http://blogs.technet.com/apg/archive/2006/11/17/reward-driven-racing-in-cambridge.aspx"&gt;Rewad Driven Racing&lt;/A&gt; in &lt;A class="" href="http://games.teamxbox.com/xbox-360/1248/Project-Gotham-Racing-3/"&gt;Project Gotham 3&lt;/A&gt;?&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=918" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# Interactive Tutorial by Jon Harrop</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/10/23/803.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/10/23/803.aspx</id><published>2006-10-23T19:12:00Z</published><updated>2006-10-23T19:12:00Z</updated><content type="html">&lt;P&gt;Jon Harrop has produced a &lt;A href="http://www.ffconsultancy.com/dotnet/fsharp/"&gt;very nice tutorial video&lt;/A&gt; showing how to use F# Interactive in Visual Studio 2005.&amp;nbsp; Very recommended for those getting started with F#.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=803" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Release notes for F# 1.1.12.5</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/09/23/679.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/09/23/679.aspx</id><published>2006-09-23T12:59:00Z</published><updated>2006-09-23T12:59:00Z</updated><content type="html">&lt;P&gt;The &lt;A href="http://research.microsoft.com/fsharp/release.aspx"&gt;F# 1.1.12.5 release&lt;/A&gt; has been posted. This is mostly a minor bug-fixing release, with the exception of the first point below. Here are the full release notes. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;High Precedence Application&lt;/B&gt;. A long-standing problem with the F# syntax is that method applications followed by property/field lookups such as &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;obj.Method1(args).Method2(args).Property1.field2&lt;/FONT&gt;&lt;/STRONG&gt; have had to be written with very non-intuitive parentheses, e.g. &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;((obj.Method1(args)).Method2(args)).Property1.field2&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;To fix this, this release incorporates a minor change in the F# syntax (with and without the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;#light&lt;/FONT&gt;&lt;/STRONG&gt; syntax option). In particular, applications &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;id(args)&lt;/FONT&gt;&lt;/STRONG&gt; now have higher precedence (i.e. bind more tightly) than the dot-notation. This only applies when no spaces or other whitespace separate the identifier and the arguments.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;--no-tailcalls now binary-format neutral&lt;/B&gt;. In prior versions the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;--no-tailcalls&lt;/FONT&gt;&lt;/STRONG&gt; option was a global setting, hence requiring the use of special libraries that had tailcalls removed. Systems such as Mono now correctly support the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;.tail&lt;/FONT&gt;&lt;/STRONG&gt; IL annotation and so a global version of this option is no longer required. The option is still supported, but will only affect the code being generated in the assembly currently being compiled and will not result in the selection of different runtime libraries.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Some revisions to the Microsoft.FSharp.Reflection API.&lt;/STRONG&gt; Some functions have been renamed or moved to an inner module. Old versions of the functions have been marked Deprecated with an error message indicating the new version to use.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Most samples rewritten using #light.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Revert change to operator overloading made in 1.1.12.2 release&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;The change to operator overloading in 1.1.12.2 was incorrect, as it disallows the use of legitimate .NET overloads. The upshot is that the basic operators now have the following signatures. These indicate that the two argument types and the return type may indeed all be different, and knowledge of the return type and the second argument type are not sufficient to resolve the overloading - a type annotation may be required to give the precise type of the first argument. &lt;/P&gt;&lt;PRE&gt;val inline (+)  : ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member (+)    : ^a * ^b -&amp;gt; ^c)
val inline (-)  : ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member (-)    : ^a * ^b -&amp;gt; ^c)
val inline ( * ): ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member ( * )  : ^a * ^b -&amp;gt; ^c)
val inline (/)  : ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member (/)    : ^a * ^b -&amp;gt; ^c)
val inline (%)  : ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member (%)  : ^a * ^b -&amp;gt; ^c)
val inline (mod): ^a -&amp;gt; ^b -&amp;gt; ^c when ^a : (static member (%)  : ^a * ^b -&amp;gt; ^c)
&lt;/PRE&gt;
&lt;P&gt;We are considering a design revision which would allow more restricted specifications of permitted overloads, but are currently erring on the side of generality, even at the cost of occasional additional type annotations.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Bug fixes&lt;/B&gt;. &lt;/P&gt;&lt;PRE&gt;700	F# Language	undentation should be allowed when () and {} immediately follow an "="
702	F# Compiler	unbound type variable problems for inner constrained polymorphic definitions
                        fix bug with #load in F# Interactive (module paths reference incorrect version after reload)&lt;BR&gt;                        Samples101 failed to compile&lt;BR&gt;                        fix minor bug with #light not at start-of-file&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=679" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Beginnings of a MonoDevelop mode for F#</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/09/17/641.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/09/17/641.aspx</id><published>2006-09-17T00:18:00Z</published><updated>2006-09-17T00:18:00Z</updated><content type="html">&lt;P&gt;Mark Czubin has begun work on an &lt;A href="http://czubin.ellisdesign.org/"&gt;F# mode for MonoDevelop&lt;/A&gt;. Will this become a community project? I hope so!&lt;/P&gt;
&lt;P&gt;Mark - for a long time we've planned to include stable and published versions of the F# APIs for interactive lexical coloring, parsing, type checking and intellisense.&amp;nbsp;Plugins for&amp;nbsp;MonoDevelop and other IDEs could use these directly. Would you like to call these if we provided them in the next release?&lt;/P&gt;
&lt;P&gt;Cheers!&lt;/P&gt;
&lt;P&gt;Don&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=641" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Three Software Developer Positions in Molecular Modelling (OCaml, Visual Studio, .NET and F# skills likely to be very welcome)</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/09/13/626.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/09/13/626.aspx</id><published>2006-09-13T12:28:00Z</published><updated>2006-09-13T12:28:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 18pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;Below is an advertisement that was sent by &lt;A href="http://www.medit.fr"&gt;MEDIT &lt;/A&gt;to the OCaml list.&amp;nbsp; The positions are for development in OCaml, but since they explicitly advertise for both OCaml and MS-VisualStudio.NET skills it seems likely that F# skills would also rate highly.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 18pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;THREE SOFTWARE DEVELOPERS in MOLECULAR MODELING&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;MEDIT SA is a French start-up providing highly specialized software and services in Molecular Modeling and Cheminformatics. Our leading edge technology is based on fast 3D protein-ligand structure comparison.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;MEDIT SA is looking for 3 software developers and molecular modeling experts to develop current and new software components for structure-based drug design. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;The successful candidates will possess &lt;SPAN style="COLOR: black"&gt;the following skills along with a passion for innovative environment&lt;/SPAN&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&amp;nbsp; - confirmed expertise in software development&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&amp;nbsp; - background in protein-ligand interactions and molecular modeling&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&amp;nbsp; - MS in science plus experience or PhD level&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Additional background in OpenGL or OCAML or MS-VisualStudio.Net would be a decisive advantage.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;MEDIT offers to qualified applicants a competitive package including Stock Options. The position is based in Palaiseau (closed to Paris)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;Motivated applicants should contact François Delfaud at:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 12pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&lt;A href="mailto:fdelfaud@medit.fr"&gt;fdelfaud@medit.fr&lt;/A&gt; (cc &lt;A href="mailto:fmoriaud@medit.fr"&gt;fmoriaud@medit.fr&lt;/A&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;For further information:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-ansi-language: EN-US"&gt;&lt;A href="http://www.medit.fr/"&gt;http://www.medit.fr&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=626" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Draft Chapter 2 of &amp;quot;Expert F#&amp;quot;: Essential Language Features</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/09/07/586.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/09/07/586.aspx</id><published>2006-09-06T23:50:00Z</published><updated>2006-09-06T23:50:00Z</updated><content type="html">&lt;P&gt;Syndicated&amp;nbsp;from &lt;A href="http://blogs.msdn.com/dsyme/archive/2006/09/06/DraftChapter2.aspx"&gt;http://blogs.msdn.com/dsyme/archive/2006/09/06/DraftChapter2.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;[ Editors Note: there are a couple of minor issues that readers have spotted with the draft chapter&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;When using the&amp;nbsp;F# Interactive console window with F# 1.1.12 you&amp;nbsp;MUST currently place ";;" on a SEPARATE line, and not at the end of the line as shown in the book.&amp;nbsp; When using it with Visual Studio you don't need the ";;" at all.&lt;/EM&gt; 
&lt;LI&gt;&lt;EM&gt;F# Interactive does not print all values in exactly the same way as shown in the book&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I'm very glad to announce the availability of &lt;A href="http://blogs.msdn.com/dsyme/attachment/743426.ashx"&gt;an early draft of Chapter 2&lt;/A&gt; of a&amp;nbsp;book on F# which I'm currently in the process of co-authoring.&amp;nbsp; The projected title of the book is,&amp;nbsp;unabashedly,&amp;nbsp;"&lt;STRONG&gt;Expert F#&lt;/STRONG&gt;".&amp;nbsp;This is&amp;nbsp;one of two F# books planned for publication by &lt;A href="http://www.apress.com"&gt;Apress&lt;/A&gt; in 2007 (having seen early drafts I can say the other one will also be great!)&lt;/P&gt;
&lt;P&gt;The chapter covers most of the language constructs in tutorial mode, with the exception of object oriented programming, which will be covered in Chapter 3.&amp;nbsp; (I hope to make a draft of Chapter 3 available fairly soon - if you'd like a &lt;EM&gt;very&amp;nbsp;&lt;/EM&gt;early draft then please contact me directly!&amp;nbsp;)&lt;/P&gt;
&lt;P&gt;I trust you will find this a useful resource for learning F# - it has been favourably received by people at MSR Cambridge.&amp;nbsp;We'll update the draft for minor fixes, though of course the final version will be available in the book.&lt;/P&gt;
&lt;P&gt;This is only a draft that has not undergone formal technical or&amp;nbsp;copy editing, so please just ignore egregious mistakes and be patient with poor formatting and&amp;nbsp;dangling symbolic cross-references (for various reasons Apress do not use Word cross-referencing and prefer to do it later in the production process).&amp;nbsp; Also some Apress fonts may be used, though I have attempted to replace these in the copy circulated here. &lt;/P&gt;
&lt;P&gt;Finally, some Word comments indicate where discrepencies exist with the current F# release.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=586" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# 1.1.12.3 now available! </title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/08/24/551.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/08/24/551.aspx</id><published>2006-08-23T23:18:00Z</published><updated>2006-08-23T23:18:00Z</updated><content type="html">&lt;P&gt;F# 1.1.12.3 is now available for download from the following URL!&amp;nbsp; As usual we're announcing this first on the hub, as a sign of thanks to hub subscribers.&lt;/P&gt;
&lt;P&gt;&lt;A title=http://research.microsoft.com/research/downloads/download.aspx?FUID=97881c01-9282-4fa4-84ae-533fa3f38935 href="http://research.microsoft.com/research/downloads/download.aspx?FUID=97881c01-9282-4fa4-84ae-533fa3f38935"&gt;&lt;FONT face=Arial&gt;http://research.microsoft.com/research/downloads/download.aspx?FUID=97881c01-9282-4fa4-84ae-533fa3f38935&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A full release announcement will be made in due course. We expect this to stick as a "major release" (1.1.11.12 had some minor problems now fixed. Here is the change list:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Collected changes between v1.1.11.12 and 1.1.12.3&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Lightweight syntax option&lt;/B&gt;. Are you sick of writing &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;in&lt;/FONT&gt;&lt;/STRONG&gt;? The &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;#light&lt;/FONT&gt;&lt;/STRONG&gt; option makes the use of certain keywords such as &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;in&lt;/FONT&gt;&lt;/STRONG&gt; optional by using indentation. See the informal language specification for details, as well as the ConcurrentLife sample and the Samples101 tutorial. Enable using &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;#light&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;First experimental cut at the Active Patterns&lt;/B&gt;. More details to follow on Don Syme's blog. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;More modules in MLLib&lt;/B&gt;. Modules &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;UInt8&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Int8&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Int16&lt;/FONT&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;UInt16&lt;/FONT&gt;&lt;/STRONG&gt; have been added.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;More collections in Microsoft.FSharp.Collections&lt;/B&gt;. The Set and Map collections are now defined as object-oriented abstractions in Microsoft.FSharp.Collections. The corresponding MLLib modules are defined in terms of these OO abstractions. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Removed deprecated &lt;FONT color=#0000ff&gt;Stream&lt;/FONT&gt; module from MLLib.&lt;/B&gt; Minor updates to the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;LazyList&lt;/FONT&gt;&lt;/STRONG&gt; module as a result.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#0000ff&gt;--gnu-style-errors&lt;/FONT&gt; flag no longer accepts spurious integer argument&lt;/B&gt;.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Slight modification to overloading for &lt;FONT color=#0000ff&gt;+&lt;/FONT&gt;,&lt;FONT color=#0000ff&gt;*&lt;/FONT&gt;,&lt;FONT color=#0000ff&gt;/&lt;/FONT&gt;,&lt;FONT color=#0000ff&gt;mod&lt;/FONT&gt;&lt;/B&gt;. &lt;/P&gt;
&lt;P&gt;In version 1.1.11 a slight change was made to the default overloaded signature for &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;-&lt;/FONT&gt;&lt;/STRONG&gt; operator to allow the return type to be unassociated to the two input types, as is required for overloading on the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.DateTime&lt;/FONT&gt;&lt;/STRONG&gt; subtraction operator. This change was mistakenly applied to other operators, resulting in situations where type inference would report unexpected inference errors for fairly straight-forward floating point code.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Bug fixes&lt;/B&gt;. &lt;/P&gt;&lt;PRE&gt;    ---	F# Compiler	-R clobbers DLLs with PDBs
    ---	F# Compiler	no properties being generated for top level values
    605	F# Visual Studio VFSI scroll to caret does not always show input position
    643	F# Compiler	internal warning when unpickling override of abstract member
    655	F# Compiler	interface implementing methods marked private but included in modul_typ
    656	F# Compiler	Runtime exception TypeLoadException method 'Specialize'... tried to implicitly override a method with weaker type parameter constraints
    645	F# Debug	problems setting breakpoints in inner functions (reported by Jack Palevich - thanks Jack!)
    647	F# Compiler	lowercase constructors are incorrectly permitted
    654	F# Interactive	cannot declare delegate types interactively
    672	F# Visual Studio Unapplied methods should give signature of method overloads in error message
    671	F# Compiler	-R feature overwrites .dll file with .pdb file
    670	F# Compiler	protected access not permitted via member 'this' variables
    668	F# Language	L-R type inference with (fun x -&amp;gt; x * x * 1.0)
    667	F# Language	exceptions to carry line numbers?
    663	 Fix broken codegen for generalized constrained polymorphic functions
    659	F# Visual Studio Intellisense does not work in a for .. to .. do line
    676	F# Visual Studio Inappropriate popup
    644	F# Language	execution and inference for record expressions is not always left-to-right
    533	F# Release	proper uninstaller
    517	F# Compiler	fsi.exe does not process #r/#I directives for files on command line
    678	F# Library	delete very old obsolete functionality fro the 'Set' module
    679	F# Library	Add object-oriented version of immutable 'Sets' to Microsoft.FSharp.Collections
    681	F# Visual Studio hardwhite intelisense
    682	F# Compiler	field and property names with same name - allowed
    680	F# Visual Studio intelisense bugs
    665	F# Language	exprs ending in semi-expr sequences cause confusion when ending constructs which are themselves semi separated.
&lt;/PRE&gt;
&lt;H3&gt;Changes between v1.1.11.7 and 1.1.11.12&lt;/H3&gt;
&lt;P&gt;&lt;B&gt;Copy-Local reference options&lt;/B&gt; DLLs that are not in the GAC must be copied to an application's directory prioer to execution. This is not currently well-supported by the F# Visual Studio mode. Thus the following options are now supported by the fsc.exe compiler and are especially recommended for use from Visual Studio:&lt;/P&gt;&lt;PRE&gt;  -R           DLL     both reference the given DLL and copy it to the output directory at the end of compilation
  --copy-local FILE    copy the given file to the output directory at the end of compilation
&lt;/PRE&gt;
&lt;P&gt;Note that &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;-R&lt;/FONT&gt;&lt;/STRONG&gt; = &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;-r&lt;/FONT&gt;&lt;/STRONG&gt; + &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;--copy-local&lt;/FONT&gt;&lt;/STRONG&gt;. Also these switches are not required by &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;fsi.exe&lt;/FONT&gt;&lt;/STRONG&gt; which is able to resolve and load DLLs from any location.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;New Installer &lt;FONT color=#0000ff&gt;InstallFSharp.msi&lt;/FONT&gt;&lt;/B&gt;. This currently always installs to the Program Files directory. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;New library module Microsoft.FSharp.MLLib.Native&lt;/B&gt; Helpers for native interop. See library documentation.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Minor breaking change for native pointers&lt;/B&gt;. The F# "'a nativeptr" is now compiled as the .NET type &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.IntPtr&lt;/FONT&gt;&lt;/STRONG&gt; for all &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt;. .NET pointers such as "int*" are now represented by "ilsigptr" types. This cange is because although .NET has a notion of a "pointer type", used in some .NET signatures, these are not "real" types, since they can't be used within generic instantiations. This is very bad for C-interop F# code, which generates generic instantiations for function and tuple values. Thus, the F# &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a nativeptr&lt;/FONT&gt;&lt;/STRONG&gt; type is now always compiled as &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.IntPtr&lt;/FONT&gt;&lt;/STRONG&gt;, regardless of &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt; (it is not type equivalent as far as F# is concerend - this is just how the type is compiled. The pseudo-type &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a ilsigptr&lt;/FONT&gt;&lt;/STRONG&gt; (IL Signature Pointer) is provided if you need to call a .NET signature using a pointer type. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;COMPILED and INTERACTIVE supported as standard --define in F# Interactive and compiled code&lt;/B&gt; This is useful as some code fragments such as Application.Run() are only needed in compiled code. Also accessing things such as resources can vary between interactive and compiled code. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Type Inference corrections for fields and records&lt;/B&gt; 
&lt;P&gt;It is implicit in the F# informal specification that record constructions should use contextual left-to-right type information to help determine the type being constructed. This is now implemented, and makes it easier to use record syntax when record member names overlap.&lt;/P&gt;
&lt;P&gt;Types are no longer inferred from uses of class field labels alone. Previously, defining a class "C" with a value field called, say "f" meant that "f" became a scoped record label. This meant that "expr.f" would infer the type of "expr" to be "C". This is still done for _record_ labels, but is no longer done for class field labels, and instead an annotation may be needed to constrain the type of "expr" based on left-to-right type inference. A helpful warning about the deprecation of this language feature is given when this occurs. This was always meant to be the intended treatment of inference for these constructs - it was an artefact of the initial implementation that inference for record field labels was treated in this way. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Various .NET generic constraints implemented &lt;/B&gt;.NET generics supports a number of somewhat adhoc constraints on the structural properties of types. It is necessary for F# to support these in order to emit correct and valid generic code and make sound use of F# libraries. The syntax of the constraints is:&lt;/P&gt;&lt;PRE&gt;   when 'a : struct       // any struct, with the exception of Nullable
   when 'a : not struct   // any reference type - note - this syntax is under revision
   when 'a : (new : unit -&amp;gt; 'a)   // default constructor
&lt;/PRE&gt;
&lt;P&gt;The following F#-specific constraint has also been added:&lt;/P&gt;&lt;PRE&gt;   when 'a : null          // any reference type that supports null according to the F# pseudo-enforcement rules for prohibiting the use of null with F# types
   when default 'a : &amp;lt;type&amp;gt;  // the variable will take the given value if not otherwise instantiated or generalized
&lt;/PRE&gt;
&lt;P&gt;Default constructors are called using the syntax:&lt;/P&gt;&lt;PRE&gt;   new 'a()
&lt;/PRE&gt;
&lt;P&gt;Where &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt; should be related to another annotation in the same definition, e.g. an argument of the enclosing function. This constructs is compiled as a call to &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.Activator.CreateInstance&amp;lt;'a&amp;gt;()&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Minor improvements and Bug Fixes&lt;/B&gt;&lt;/P&gt;&lt;PRE&gt;   573	F# Compiler	list equality is not tail recursive.
   613	F# Library	List.combine and List.split are not tail recursive (reported by Ralf Herbrich - thanks Ralf!)
   615	F# Interactive	FSI reflection code throws TypeLoad error for type reference within the same interaction.
   602	F# Compiler	name of type not reported in "member required" error
   120	F# Compiler	Things stored in public static fields should only be accessible via properties
   495	F# Compiler	SQL cannot load F# assemblies due to publically writable statics
   625	F# Compiler	Poor error location for error messages related to 'new' in signatures
   626	F# Library	Add 'generate' methods to IEnumerable.
   628	F# Compiler	nested ifdefs not always handled correctly (Reported by Jack Palevich - thanks Jack!)
   630	F# Compiler	Error writing assembly with F# 1.1.11.7 (reported by Lewis Bruck - thanks Lewis!)
   631	F# Compiler	System.MethodAccessException thrown by FSI.EXE (reported by Pierre Dangauthier - thanks Pierre!)
   634	F# Compiler	object expression limitations: let bound object expressions not generalized (reported by Greg Neverov - thanks Greg!)
   640	F# Compiler	record fields should be inferred from the known context type of the expression 
   639	F# Compiler	class fields are contributing to the record field environemnt
   638	F# Compiler	multiple constraints on type parameters not being correctly printed
   636	F# Compiler	simple object expressions implementing interfaces should be allowed in "let rec" without generating an iniitalization graph warning
   632	F# Debug	smoother debugging needed for inner recursive functions
   648	F# Library	Documentation for printf codes for 64-bit integers is incorrect (reported by Richard Mortier - thanks Richard!)
   650	F# Compiler	incorrectly permitting the declaration of interfaces that contain fields (reported by Robert Pickering - thanks Robert!)
   649	F# Compiler	bug in quotation template filling for typed quotations (Reported by Tomas Petricek - thanks Tomas!)
   646	F# Compiler	attributes on top level values not propagating to generated static fields, e.g. ThreadStatic (reported by Robert Pickering - thanks Robert!)
   645	F# Debug	setting breakpoints in inner functions sort of broken (reported by Jack Palevich - thanks Jack!)
&lt;/PRE&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=551" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# at the ICFP programming contest</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/08/15/506.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="3101" href="http://cs.hubfs.net/blogs/f_team/attachment/506.ashx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/08/15/506.aspx</id><published>2006-08-15T12:41:00Z</published><updated>2006-08-15T12:41:00Z</updated><content type="html">&lt;P&gt;Some weeks ago the &lt;A href="http://icfp06.cs.uchicago.edu/"&gt;International Conference on Functional Programming&lt;/A&gt; ran its annual &lt;A href="http://icfpcontest.org/"&gt;programming contest&lt;/A&gt;. In this competition teams of any size from all over the Internet compete with each other to solve programming puzzles set by the contest organizers. Two small groups from MSR Cambridge entered on the spur of the moment, one of researchers and one of interns (and yes, the interns pipped the researchers in the final analysis!)&lt;/P&gt;
&lt;P&gt;This year's task initially concerned writing an interpreter for a virtual machine. The specification of the virtual machine was very simple and was given as part of the problem definition. The interpreter implementation needed to be very fast as it was used to run a mini operating system which served as the basis for the rest of the contest. Many teams initially wrote their interpreters in their favourite functional or scripting language but found that they had to &lt;A href="http://lists.andrew.cmu.edu/pipermail/icfpcontest-discuss/Week-of-Mon-20060724/000451.html"&gt;re-write it in C to gain the required performance&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;F# is a high-level and functional language, so it's not surprising that it was excellent for the rapid design and prototyping of the interpreter.&amp;nbsp;However, it also ran with excellent performance, sufficient that it is was not necessary to re-write the code in a "faster" language, and indeed the fully managed and verifiable F# implementation has a speed comparable to &lt;A href="http://lists.andrew.cmu.edu/pipermail/icfpcontest-discuss/Week-of-Mon-20060724/000498.html"&gt;C implementations&lt;/A&gt;. The C implementations can perform faster pinned memory allocation, use native pointers in the interpreter’s state and&amp;nbsp;avoid indirect and bounds-checked array access. Despite this, the F# implementation is only 10-15% slower than the fastest C implementations. The code for the F# interpreter is attached.&lt;/P&gt;
&lt;P&gt;We looked at two performance optimizations using "unsafe" C-like techniques.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A bottleneck in a managed CLR implementation is memory access via managed arrays. To interpret one memory access instruction in the interpreter requires two bounds-checked array lookups, whereas an unmanaged implementation can get away with an addition and a pointer dereference. To avoid the array bounds-checking we tried pinning allocated arrays and using unverifiable code to access the memory without bounds checks. This can be done very elegantly in F# simply by writing low-level code that directly uses CLR byte code via inline assembly blocks. Unverifiable byte-code will give the same memory access performance as C code. However the cost of allocating a pinned array on the CLR is so large that this approach halved the performance of the interpreter in the benchmark. So although the memory access performance improved, the memory allocation performance (which is another bottleneck for a managed CLR implementation) declined to such an extent as to produce a net decrease in performance.&lt;/LI&gt;
&lt;LI&gt;However, unverifiable memory access to a pinned array can still be used to improve memory access to the "registers" array in the interpreter as this array only needs to be pinned once at start-up. Also aligning elements in the registers array to 8-byte boundaries improves performance again. The code for an "unsafe" version of the F# implementation uses these optimizations through inline assembly block is also attached. It gives a performance gain of about 5%.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The whole issue of performance-impairing bounds checks could be completely and elegantly solved if the Microsoft .NET Framework 2.0 CLR implemented the &lt;FONT face="Courier New"&gt;no.rangecheck&lt;/FONT&gt; instruction prefix as documented in the &lt;A href="http://download.microsoft.com/download/D/C/1/DC1B219F-3B11-4A05-9DA3-2D0F98B20917/Partition%20III%20CIL.doc#_Toc100636386"&gt;ECMA specification&lt;/A&gt;, and this instruction could be immediately utilized from F# (see below). This prefix tells the JIT compiler to skip the bounds checking on an array access. So regular byte-code instructions for accessing an array can simply be marked with this prefix to eliminate the bounds-checking overhead. Of course the resulting code is still unverifiable but compared to the current approach: the array does not have to be pinned (avoiding bounds checking was the sole reason we needed to pin the arrays above) and array access code does not need to be re-factored to use a different instruction sequence. If this prefix were in the CLR then fast (albeit unsafe) array access could be implemented in F# simply by defining different array brackets, e.g.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;let (.[]) (arr: 'a[]) (idx:int) = (# "no.rangecheck ldelem" arr idx : 'a #)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;On the topic of memory allocation, the attached F# implementations use one CLR memory allocation for every memory allocation in the interpreted code. A more efficient scheme might be to allocate a single CLR array for the interpreter’s heap and "manage" that heap yourself. This would reduce the memory allocation performance overhead and remove one layer of indirection from memory access.&lt;/P&gt;
&lt;P&gt;Finally, the very best C implementations reported so far used runtime code generation.&amp;nbsp; We believe these results could be replicated very nicely using .NET Reflection.Emit or Lightweight code generation, though haven’t tried that.&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=506" width="1" height="1"&gt;</content><author><name>gneverov</name><uri>http://cs.hubfs.net/members/gneverov.aspx</uri></author></entry><entry><title>F# Internships at MSR Cambridge (now All-Year-Around)</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/08/13/480.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/08/13/480.aspx</id><published>2006-08-13T00:39:00Z</published><updated>2006-08-13T00:39:00Z</updated><content type="html">&lt;P&gt;See &lt;A href="http://blogs.msdn.com/dsyme/archive/2006/08/13/696931.aspx"&gt;http://blogs.msdn.com/dsyme/archive/2006/08/13/696931.aspx&lt;/A&gt;&amp;nbsp;for the full article...&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Internships at MSR Cambridge (now All-Year-Around)&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;EM&gt;Are you interested in working for three months at &lt;/EM&gt;&lt;A href="http://research.microsoft.com/aboutmsr/labs/cambridge"&gt;&lt;EM&gt;Microsoft Research&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;, Cambridge, on a project related to F#? &amp;nbsp;MSR Cambridge now takes interns year-round, not just in the summer months. We are keen to attract motivated and well-qualified folk to work with us on our research, and on improving&amp;nbsp;or developing F# and its related tools and libraries.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=480" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>New F# release candidate 1.1.11.12 now available...</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/07/20/432.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/07/20/432.aspx</id><published>2006-07-20T02:29:00Z</published><updated>2006-07-20T02:29:00Z</updated><content type="html">&lt;P&gt;"you read it first on the Hub"...&lt;/P&gt;
&lt;P&gt;A new release candidate of F# is now available!&amp;nbsp; This has&amp;nbsp;a bunch of bug fixes, some&amp;nbsp;minor tool additions, a couple of minor language&amp;nbsp;changes&amp;nbsp;(see below) and, perhaps most importantly, a new installer.&amp;nbsp; Here's the link to the F# release candidate 1.1.11.12, which has just gone up on the external web.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://research.microsoft.com/research/downloads/download.aspx?FUID={D9307494-54A2-4EF8-9543-93B2AB8E8C22}"&gt;F# Compiler 1.1.11.12&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note: the last step of the installer can take several minutes, if you have Visual Studio.&amp;nbsp; Please be patient.&amp;nbsp; The progress bar does not progress during this time.&lt;/P&gt;
&lt;P&gt;Note: if you have trouble installing you can still install using the "alternative-install" scripts.&amp;nbsp; There is also a somewhat&amp;nbsp;rudimentary&amp;nbsp;installation script for Mono (run using "sh install-mono.sh").&lt;/P&gt;
&lt;P&gt;Note: there are likely to be&amp;nbsp;a few niggles - please let us know how you get on.&lt;/P&gt;
&lt;P&gt;Here are the release notes:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Copy-Local reference options&lt;/STRONG&gt; DLLs that are not in the GAC must be copied to an application's directory prioer to execution. This is not currently well-supported by the F# Visual Studio mode. Thus the following options are now supported by the fsc.exe compiler and are especially recommended for use from Visual Studio:&lt;/P&gt;&lt;PRE&gt;  -R           DLL     both reference the given DLL and copy it to the output directory at the end of compilation
  --copy-local FILE    copy the given file to the output directory at the end of compilation
&lt;/PRE&gt;
&lt;P&gt;Note that -R =&amp;nbsp; -r + --copy-local. Also these switches are not required by &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;fsi.exe&lt;/FONT&gt;&lt;/STRONG&gt; which is able to resolve and load DLLs from any location. 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;New Installer InstallFSharp.msi&lt;/B&gt;. This currently always installs to the Program Files directory. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Many minor bug fixes&lt;/B&gt; See below&lt;/P&gt;
&lt;P&gt;&lt;B&gt;New library module Microsoft.FSharp.MLLib.Native&lt;/B&gt; Helpers for native interop. See library documentation.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Minor breaking change for native pointers&lt;/B&gt;. The F# "'a nativeptr" is now compiled as the .NET type &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.IntPtr&lt;/FONT&gt;&lt;/STRONG&gt; for all &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt;. .NET pointers such as "int*" are now represented by "ilsigptr" types. This change is because although .NET has a notion of a "pointer type", used in some .NET signatures, these are not "real" types, since they can't be used within generic instantiations. This is very bad for C-interop F# code, which generates generic instantiations when these values are used as part of&amp;nbsp;function and tuple values. Thus, the F# &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a nativeptr&lt;/FONT&gt;&lt;/STRONG&gt; type is now always compiled as &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.IntPtr&lt;/FONT&gt;&lt;/STRONG&gt;, regardless of &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt; (these are distinct types as far as F# type checking is concerened - this is just how the type is compiled). The pseudo-type &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a ilsigptr&lt;/FONT&gt;&lt;/STRONG&gt; (IL Signature Pointer) is provided if you need to call a .NET signature&amp;nbsp;that is described using a pointer type. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;COMPILED and INTERACTIVE supported as standard --define settings&amp;nbsp;in F# Interactive and compiled code&lt;/B&gt; This is useful as some code fragments such as Application.Run() are only needed in compiled code. Also accessing things such as resources can vary between interactive and compiled code. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Type Inference corrections for fields and records&lt;/B&gt; 
&lt;P&gt;Record constructions now use contextual left-to-right type information to help determine the type being constructed. This makes it easier to use record syntax when record member names overlap.&lt;/P&gt;
&lt;P&gt;Types are no longer inferred from uses of class field labels alone. Previously, defining a class "C" with a value field called, say "f" meant that "f" became a scoped record label. This meant that "expr.f" would infer the type of "expr" to be "C". This is still done for _record_ labels, but is no longer done for class field labels, and instead an annotation may be needed to constrain the type of "expr" based on left-to-right type inference. A helpful warning about the deprecation of this language feature is given when this occurs. This was always meant to be the intended treatment of inference for these constructs - it was an artefact of the initial implementation that inference for record field labels was treated in this way. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Various .NET generic constraints implemented &lt;/B&gt;.NET generics supports a number of somewhat adhoc constraints on the structural properties of types. It is necessary for F# to support these in order to emit correct and valid generic code and make sound use of F# libraries. The syntax of the constraints is:&lt;/P&gt;&lt;PRE&gt;   when 'a : struct       // any struct, with the exception of Nullable
   when 'a : not struct   // any reference type - note - this syntax is under revision
   when 'a : new()        // default constructor
&lt;/PRE&gt;
&lt;P&gt;The following F#-specific constraint has also been added:&lt;/P&gt;&lt;PRE&gt;   when 'a : null          // any reference type that supports null according to the F# pseudo-enforcement rules for prohibiting the use of null with F# types
   when default 'a = &amp;lt;type&amp;gt;  // the variable will take the given value if not otherwise instantiated or generalized
&lt;/PRE&gt;
&lt;P&gt;Default constructors are called using the syntax:&lt;/P&gt;&lt;PRE&gt;   new 'a()
&lt;/PRE&gt;
&lt;P&gt;Where &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;'a&lt;/FONT&gt;&lt;/STRONG&gt; should be related to another annotation in the same definition, e.g. an argument of the enclosing function. This constructs is compiled as a call to &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;System.Activator.CreateInstance&amp;lt;'a&amp;gt;()&lt;/FONT&gt;&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Minor improvements and Bug Fixes&lt;/B&gt;&lt;/P&gt;&lt;PRE&gt;573	F# Compiler	list equality is not tail recursive.
613	F# Library	List.combine and List.split are not tail recursive (reported by Ralf Herbrich - thanks Ralf!)
615	F# Interactive	FSI reflection code throws TypeLoad error for type reference within the same interaction.
602	F# Compiler	name of type not reported in "member required" error
120	F# Compiler	Things stored in public static fields should only be accessible via properties
495	F# Compiler	SQL cannot load F# assemblies due to publically writable statics
625	F# Compiler	Poor error location for error messages related to 'new' in signatures
626	F# Library	Add 'generate' methods to IEnumerable.
628	F# Compiler	nested ifdefs not always handled correctly (Reported by Jack Palevich - thanks Jack!)
630	F# Compiler	Error writing assembly with F# 1.1.11.7 (reported by Lewis Bruck - thanks Lewis!)
631	F# Compiler	System.MethodAccessException thrown by FSI.EXE (reported by Pierre Dangauthier - thanks Pierre!)
634	F# Compiler	object expression limitations: let bound object expressions not generalized (reported by Greg Neverov - thanks Greg!)
640	F# Compiler	record fields should be inferred from the known context type of the expression 
639	F# Compiler	class fields are contributing to the record field environemnt
638	F# Compiler	multiple constraints on type parameters not being correctly printed
636	F# Compiler	simple object expressions implementing interfaces should be allowed in "let rec" without generating an iniitalization graph warning
632	F# Debug	smoother debugging needed for inner recursive functions
648	F# Library	Documentation for printf codes for 64-bit integers is incorrect (reported by Richard Mortier - thanks Richard!)
650	F# Compiler	incorrectly permitting the declaration of interfaces that contain fields (reported by Robert Pickering - thanks Robert!)
649	F# Compiler	bug in quotation template filling for typed quotations (Reported by Tomas Petricek - thanks Tomas!)
646	F# Compiler	attributes on top level values not propagating to generated static fields, e.g. ThreadStatic (reported by Robert Pickering - thanks Robert!)
645	F# Debug	setting breakpoints in inner functions sort of broken (reported by Jack Palevich - thanks Jack!)
&lt;/PRE&gt;
&lt;P&gt;Don for the F# team at MSR Cambridge&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=432" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>F# 1.1.11.8+ will include new installer</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/07/13/421.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/07/13/421.aspx</id><published>2006-07-13T01:38:00Z</published><updated>2006-07-13T01:38:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial&gt;This is a heads up that we're finalizing the new installer/uninstaller for F# and will be including it in the next release. Anyone who has worked on an installer will know there can be many niggles as you iron out the little problems on all target configurations, so please stay with us if it takes us a few iterations. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Anyway, when you get the new release,&amp;nbsp;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; you will see the list below at the top directory.&amp;nbsp;&amp;nbsp;For Windows systems with .NET 2.0 all you will have to do is run &lt;FONT color=blue&gt;&lt;SPAN style="COLOR: blue"&gt;InstallFSharp.msi&lt;/SPAN&gt;&lt;/FONT&gt;.&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;If the install fails you can still install the contents of the zip using alternative-install*.bat.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Don&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:38&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 987 alternative-install-vs2003.bat&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:38&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 872 alternative-install-vs2005.bat&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:38&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4,857 alternative-install.bat&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:30&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bin&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:18&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:38&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 831 install-mono.sh&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT color=blue size=1&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:59&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 727,040 InstallFSharp.msi&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:18&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:37&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9,623 LICENSE-fsharp.txt&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:21&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; manual&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:37&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 209,834 README-fsharp.html&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:25&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; samples&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:29&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;13/07/2006&amp;nbsp; 01:18&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;source&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=1&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=421" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Any (minor) requests for F# 1.1.11.8?</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/07/11/419.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/07/11/419.aspx</id><published>2006-07-10T23:40:00Z</published><updated>2006-07-10T23:40:00Z</updated><content type="html">&lt;P&gt;F# 1.1.11.8 is being finalized.&amp;nbsp; This is mostly a bug-fix release, with lots of small but important improvements (ever noticed how that "caret" often appears just off the edge of the screen in Visual F# Interactive?&amp;nbsp; Well, no more!) That said, we may squeeze in an early prototype of a&amp;nbsp;new feature called "active patterns".&amp;nbsp; We may also have a new installer/uninstaller (we'll keep the ZIP distribution).&lt;/P&gt;
&lt;P&gt;F# is being used an awful lot at Microsoft Research in Cambridge (home grown users!), so we're often busy collecting feature requests from them.&amp;nbsp; But why stop there? If anybody has small feature requests for this or a future version please email them to me or &lt;A href="http://www.strangelights.com/fsharp/Wiki/default.aspx/FSharpWiki.SuggestionsForFSharp"&gt;place them on the wiki&lt;/A&gt;. I'm not guaranteeing we'll get to them, but we'd love to hear your suggestions.&lt;/P&gt;
&lt;P&gt;Don&lt;/P&gt;&lt;img src="http://cs.hubfs.net/aggbug.aspx?PostID=419" width="1" height="1"&gt;</content><author><name>dsyme</name><uri>http://cs.hubfs.net/members/dsyme.aspx</uri></author></entry><entry><title>Marcus from dnAnalytics: Using F# with the dnAnalytics math library</title><link rel="alternate" type="text/html" href="http://cs.hubfs.net/blogs/f_team/archive/2006/05/13/254.aspx" /><id>http://cs.hubfs.net/blogs/f_team/archive/2006/05/13/254.aspx</id><published>2006-05-12T23:51:00Z</published><updated>2006-05-12T23:51:00Z</updated><content type="html">&lt;DIV class=BlogPostContent&gt;
&lt;P&gt;Marcus is one of the guys creating the &lt;A href="http://www.dnanalytics.net/"&gt;dnAnalytics&lt;/A&gt; library, which looks like a great open-source effort to fill the role of a portable&amp;nbsp;BSD-licensed core math library on the .NET Framework.&amp;nbsp; He's been &lt;A href="http://www.dnanalytics.net/blogs/marcus/archive/2006/05/07/189.aspx"&gt;looking at F# recently&lt;/A&gt;&amp;nbsp;- this is a great starter-tutorial for those who want to use this library with F#:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dnanalytics.net/blogs/marcus/archive/2006/05/07/189.aspx"&gt;http://www.dnanalytics.net/blogs/marcus/archive/2006/05/07/189.aspx&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;I was playing around with the &lt;/EM&gt;&lt;A href="http://research.microsoft.com/fsharp"&gt;&lt;FONT color=#028b36&gt;&lt;EM&gt;F#&lt;/EM&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;EM&gt; shell to see if I could use our library with it.&amp;nbsp;... The shell is really simple to use. Just reference a DLL and the namespaces you want to use, and