|
|
F# Manual
- Contents
Getting Started with F#
F# is a functional programming language, where a program is a series of bindings of expressions to identifiers. Here are some examples:
let x = 3 + (4 * 5)
let res = (if x = 23 then "correct" else "incorrect")
When executed this program binds "x" to the value 23 and "res" to the string "correct". You can execute this directly in "F# Interactive" (fsi.exe) as follows – note the use of ;; to separate entries given to fsi.exe:
> bin\fsi.exe
MSR F# Interactive, (c) Microsoft Corporation, All Rights Reserved
F# Version ...
> let x = 3 + (4 * 5);;
val x : int
> let res = (if x = 23 then "correct" else "incorrect");;
val res : string
> res;;
val it : string = "correct"
The last interaction shows how to enter expressions into F# Interactive and have them evaluated immediately. An expression is implicitly bound to a variable called it. F# is not a "pure" functional language, so the evaluation of expressions may have side effects, e.g., I/O, mutating state, displaying graphics, etc. Here is a simple F# console-based program:
let x = "Hello World";;
System.Console.WriteLine(x);;
If placed in a text file hello.fs then this program can be compiled from the command line as follows:
> fsc hello.fs
and executed using
> hello.exe
You may prefer to use the file extension .ml, as in hello.ml. F# code can also be placed in a library, e.g., lib.fs may contain
let myLibFunction() = System.Console.WriteLine("Hello World")
and your hello.fs may simply contain
let main = Lib.myLibFunction()
Here "main" is not a function but rather a dummy value to hold the result of the computation on the right of the "=" symbol. You can compile using:
> fsc -a lib.fs
> fsc -r lib.dll hello.fs
producing a lib.dll library and the hello.exe executable. Both of these are .NET assemblies. You can also compile your library and main program together to produce a single hello2.exe:
> fsc -o hello2.exe lib.fs hello.fs
Typical projects will compile several F# files into each assembly. |