|
|
|
|
|
by lmm
4735 days ago
|
|
OOI why did you choose F# rather than Haskell, OCaml or Scala? I mean sure, it's a perfectly good language for the more general case (leaving aside the poor tool support outside Windows and limited deployment options - but conversely if you're already committed to Windows the tooling is very good), but there are plenty of comparable options there; the unique selling point is the .net integration. |
|
* Easy multi-platform targetting and platform bindings without fuss.
* Mature and supported BCL and 3rd party libraries
* Access to the .NET ecosystem tooling like profilers, debuggers etc
* Easy to use Native FFI without having to write boilerplate C stubs
* Active Patterns
* Built-in Units of measure without perf cost.
* Built-in support for Unboxed Structs with Layout control and operator overloading
* Unboxed floats, not just for 64 bit ones syntactically present in arrays
* Built-in control over inlining
* 32 bit ints not 31
* Type Providers allowing typed access to untyped data and much more
[F# 3.0: Data, Services, Web, Cloud... at Your Fingertips] (http://channel9.msdn.com/Events/TechEd/Europe/2012/DEV338)
http://www.navision-blog.de/2012/03/25/typed-access-to-json-...
http://www.navision-blog.de/2012/03/22/wpf-designer-for-f/
http://blogs.msdn.com/b/dsyme/archive/2012/08/03/access-stat...
* Built-in support for runtime code quotions, with code inspection
* Built-in support for runtime reflection
* OOP abstractions without perf loss
* Built-in support for Operator overloading
* Polymorphic print function
* Mature Multicore friendly runtimes
* mutable local variables on the stack
* Cleaned up offside-rule indent based syntax with optional OCaml style override.
* Partial application of Discriminated Unions like List.map Some [1; 2; 3]
In OCaml you have todo List.map (fun x -> Some x) [1; 2; 3]
* Methods on Records and Discriminated Unions
* Extension Methods
* Built-in syntax for Array slicing
* Built-in syntax for sequence based for loops
* Built-in syntax for List / Array range construction like [1 .. 10]
* Extensible computation expression syntax for more than just monads.