F# runs on the .NET platform. This means that nearly all the major tools for the platform can be easily reused for F# code. For example, F# produces intermediary language code, with a close correspondence to the source text, and with sensible generated identifier names. This means debuggers, profilers and other tools not only work without any problems, but also that their results are just as intelligible as when applied to C# code. Furthermore, F#’s excellent bi-directional language interoperability means that you can even use code generation tools such as parser-generators.
Because of this, F# has a surprisingly powerful and complete set of tools for a research language. Traditionally, functional languages have not had good profilers or graphical debuggers. With F# these tools essentially come for free.
The most important tools supported by F# are:
- A command line compiler (fsc.exe) supporting separate compilation.
- Graphical interactive debugging (via Visual Studio).
- Parsing and Lexing (fslex.exe and fsyacc.exe).
Debugging with Visual Studio.NET is well supported. Debugging is supported through any .NET debugger, e.g. the command line “cordbg” tool that comes with the .NET Framework SDK, or the graphical debugger “DbgClr”.