Apologies that this post is fairly nonsensical. I've put my raw NZ TechEd 2011 notes up here for my reference. I'd like to think that I'll refine them over time, but that probably won't be the case.
TechEd Online
Ivan's website - TechEd NZ 2011 demos and videos
What is F#?
A strongly typed functional programming language for .NET.
Can use existing .NET libraries.
F# outputs .NET assemblies so can be called from C# or VB.NET
Functional language.
Organised by functions rather than classes and objects.
Use cases
Scientific and numerical computing
Finance
Insurance
Parsers / DSLs
General purpose
F# 2 is included in Visual Studio 2010
Runs on all major .NET platforms
Variable types are inferred
All functions have a value and will return a value.
Indentation is significant. Indent implies structure (no braces)
Can't leave out else clause from if expression as it should return a value.
BigInteger can handle really large numbers
Can add new infix operators
F# lists are more like linked lists and are immutable.
New lists and share allocated resources to existing lists as the are immutable.
Pipeline operator |> makes chaining operators easier to read. Kind of similar to extension methods in C#
Shorthand lamda syntax. Can leave the full lamba syntax out.
Function composition operator
(not << divisibleBy 2)
type State = { }
Units of measure can provide compile time checking
async and let! (yield the thread until the async result is returned)
Considerations:
Smaller programmer pool - Project managers won't like it.
Learning curve
Tooling - language interop is your friend
Saves work - F# works harder so you don't have to
Expressive power - e.g. pattern matching, options, infix
Immutability by default
Async workflows and agents
blogs.msdn.com/b/fsharpteam
Friendly F#
tryfsharp.org
fssnip.net - F# snippets
hubfs.net