4. Why F#?
• Functional First
• Immutability by default
• Powerful functional abstractions (LINQ+++)
• StrongType System
• Friends don't let friends use null
• Option type
• Whole class hierarchies in handful of lines
• Discriminated unions
• Record types
5. Why F#?
• Powerful but Light Syntax
• Significant whitespace
• Everything is an expression
• Pattern matching
• Type Inference
• Almost feels like a dynamic language like python
• Easier to Understand
• Declarative feel
• Explicit compilation order
• Signature files
6. Why F#?
• REPL
• Testability
• More productive than compile-run cycle
• Similar to dynamic languages (Python, Ruby, etc…)
• All your types are belong to us
• Type Providers
7. Why F#?
• Very goodAsync support
• What’s in C# 4.5
• More composable
• Built-in cancellation!!!
• Started explicitly
• http://tomasp.net/blog/csharp-async-gotchas.aspx
8. Windows 8 /Windows Phone 8
• No support forWinRT /WinPRT in F#
• View has to be done in C#
• F# only available through Portable Class Library
• MVVM doesn’t work as well as inWPF
• Data binding works ok-ish
• Reflection doesn’t work on erased type providers
• ICustomTypeDescriptor & similars not accessible from F# PCL
• F# compilation toWinJS
• http://funscript.info/
• http://www.websharper.com
9. Windows Phone 7
• Almost everything can be done in F#
• Still need wrapper C# project
• FSharp.Core 4.0 (noType Providers)
• No PCL support
• Xamarin.iOS / Xamarin.Android
• Also allows view to be done in F#
• Type Providers currently don’t work, but this will probably improve
10. Tips &Tricks
• Create F# wrappers tuned for currying & partial application
• LazyAsync
• Interfaces to access view elements
• Data Binding
• Match functions
• Option type doesn’t behave like regular DUs
• override x.ToString() = sprintf "%A" x
11. Q & A
• SourceCode
• http://github.com/ovatsus/LearnOnTheGo
• http://github.com/ovatsus/UKTrains