I am starting to learn F#. I am well versed programming languages like C# (and using the .NET framework in general), but functional programming is new to me. The way I learn best is by taking a book about the subject and starting to read - so I grabbed a copy of "Expert F#" and "F# for scientists". A few times I got the impression that those books seems already to be outdated due to recent changes in the language - nothing too dramatic, but it gives a bit of a nagging feeling that there may be more.
Now that F# 2.0 seems to have stabilized, it would be nice to see how the 'real' F# has turned out compared to the versions of the language described in those (and similar) books.
So my questions are:
edit: Thanks all for the answers!
As far as release notes go, I was able to dig up the following "detailed release notes" posts on Don Syme's blog, applying to versions of F# after 1.9.2 (the version "Expert F#" mentions as being the version used in the book):
I didn't find anything about version 1.9.5 - did that one ever exist?
The 2022 car will have a redesigned front and rear wing and changes to the floor in an attempt to produce more downforce and make the car stick to the track more. Aesthetically, the cars will look much different with an updated rear wing as well as new 18-inch wheels replacing the 13-inch of years gone by.
The key changes are: A ground-effect floor. The 2022 car has two long underfloor tunnels which create a 'ground effect' - meaning there is more suction under the car to pull it to the tarmac, while also ensuring more of the downforce is generated from under the car.
The 2022 Formula One cars were supposed to be three to five seconds slower than the 2021 cars, but it turns out that's not quite the case. The designers have already done a good job this year, as the top has stayed pretty close to last year's times.
Rule changes regarding aerodynamics mean this year's F1 cars look quite different from their 2021 predecessors. Some drivers have also switched cockpits.
I probably can't give a complete answer, but here are some things that come to mind as having undergone non-trivial changes in the past two years I've been working on F#...
Minor changes:
Seq.to_array
is
now Seq.toArray
. Some significant changes to async
and quotations APIs too.#light
is now the default, you can quit putting it at the top of every file[<OverloadID>]
to make overloaded member functionsNew features:
comparison
and equality
constraints were new in Beta2.unmanaged
constraint in RC.I'm doing a windiff of the lastest(1.9.9.9) and previous(1.9.7.8) release of FSharp.
I noticed many added calls to checkNonNull in Array, Seq, Reflect and the Quotation module. I assume these calls were added to protect F# libs from being passed nulls from another language such as C#. Any insight Brian? The function nullArg throws an ArgumentNullException.
let inline checkNonNull argName arg =
match box arg with
| null -> nullArg argName
| _ -> ()
I finished going through all the changed fs files and most of the changes are to private functions that are not exposed directly. The only thing that may effect the user is different pretty printing of sets and maps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With