You are previewing Programming F#.

Programming F#

Cover of Programming F# by Chris Smith Published by O'Reilly Media, Inc.
O'Reilly logo

Anatomy of an F# Program

By now, you might want to learn how to take the F# code we have been writing in the FSI window and convert it into actual F# programs. But in reality, every code snippet you have seen so far has been a full program!

Most other languages, like C#, require an explicit program entry point, often called a main method. Yet our F# programs so far haven’t declared any special markup indicating where the program should begin. In F#, for single-file applications, the contents of the code file are executed from top to bottom in order (without the need for declaring a specific main method).

For multifile projects, however, code needs to be divided into organization units called modules or namespaces.


All the code we have written so far has been in a module. By default, F# puts all your code into an anonymous module with the same name as the code file with the first letter capitalized. So, if you have a value named value1, and your code is in file1.fs, you can refer to it by using the fully qualified path: File1.value1.

Creating modules

You can explicitly name your code’s module by using the module keyword at the top of a code file. After that point, every value, function, or type defined will belong to that module:

module Alpha

// To refer to this value outside the module
// use: Alpha.x
let x = 1

Nested modules

Files can contain nested modules as well. To declare a nested module, use the module keyword followed by the name of your module and an equals sign =. Nested ...

The best content for your career. Discover unlimited learning on demand for around $1/day.