higher-rank polymorphism (see Peyton Jones, et al.) (suggestion by Geoff Washburn)
constructor polymorphism (AKA higher-order polymorphism) (suggestion by Geoff Washburn)
the compiler could determine the right order for files that include each other
Integrate F# documentation into MSDN
#region code folding in the VS.Net editor
Indentation support in VS.Net editor (suggestion by Geoff Washburn)
Ability to add method coercion as in Ocaml, e.g. class foo = object method bar (obj : <obj_method: unit->unit ; ..> ) = obj#obj_mehod() end
Use System.Environment.ExpandEnvironmentVariables on #I include paths, to allow portable references to, for example, the DirectX libraries. (suggestion by Jay Hugard)
Deprecate ":?>" and replace with ":?<", because the latter expands ("<") the class rather than narrows (">") it. (suggestion by Jay Hugard)
Add "repeat/until" loops. (suggestion by Jay Hugard)
Modify the InteractiveTopLevel to ignore "module" statements, so that "<Ctrl> plus A" then "<Alt> plus <Enter>" from Visual Studio will interpret the entire file rather than result in multiple (and incorrect) syntax errors. (suggestion by Jay Hugard)
What is the concurrency 'story' for F# vs. (for example) Erlang?
Release F# Visual Studio Express (free)
Optimize "raise" when used to break out of (imperative) loops, or introduce a "break" keyword. (Suggestion by Jay Hugard)
Raise the precedence of member access above function binding; e.g., "fn obj.ToString()" should bind as "fn (obj.ToString())", not "(fn obj).ToString()". (Suggestion by Jay Hugard)
Past suggestions that have been included in the release are:
Make debugging DLLs possible (it's possible for any other .NET language)
sequence comprehensions
Make "new" bind tighter, so I can write: "some_function(a,b,new Object())" without extra braces around "new Object()"
programming also.
Please add more!
1. configurable type promotion. #IntToFloat perhaps. after all, 1.0 + 2 = 3.0
make it possible to dump fsyacc state ala OCAML's p option. Debug code exists, but is inaccessible without a rebuild.
Dynamic field names just like in MATLAB! This will allow cleaner variable names, avoid numerical index bugs, and make the code more readable.
Allow comparison chaining like in Python or Perl 6; e.g. "if 100 <= foo < 200 then ..."
Structural record types to eliminate the need to name and declared every record type and for use as simple named arguments (by Vesa Karvonen)
Allow nested type definitions (in class (and maybe interface) types) and/or local ("let bound") type definitions for finer scoping and allowing definitions closer to uses (by Vesa Karvonen)
"local ... in ..." scoping construct (like "local ... in ... end" in Standard ML) (by Vesa Karvonen)
Improve compiler speed (by Vesa Karvonen)
Option to dump inferred types to a file (like O'Caml's "-dtypes" or MLton's "-show-def-use") (by Vesa Karvonen)
Option to dump def-use information to a file (like MLton's "-show-def-use") (by Vesa Karvonen)
Ability to implement interfaces more flexibly. For example, allow overriding inherited interface member definitions. Or maybe allow one to implement an interface via delegation to a given object (interface Foo via (myFoo :> Foo)). The current approach, IIUC, where each interface must be implemented separately makes the use of interfaces very repetitive and verbose. One can't even have a default implementation of an interface. (by Vesa Karvonen)
Allow local ("let bound") open like in SML (by Vesa Karvonen)