Fsharp
Apparence
Command line
dotnet fsi # start F# Interactive
dotnet fsi script.fsx # run script.fsx
dotnet new console -o fsharp1 -lang f#
|
printf
let s = "value"
printfn "text %A text" s
|
Format | Type |
---|---|
%A | any |
%s | string |
%i | integer |
%b | boolean |
List and arrays
let list1 = [1; 2; 3]
let list2 = [1..5] // [1; 2; 3; 4; 5]
let list3 = [0..2..10] // [0; 2; 4; 6; 8; 10]
// elements in lists are not mutable
// cons operator
0 :: list1 // create a new list with 0 at the head [0; 1; 2; 3]
// extract head and tail
let head :: tail = list1 // head: 1, tail: [2; 3]
// concatenate operator
list1 @ [4; 5] // create a new list [1; 2; 3; 4; 5]
// arrays
let myArray = [|1; 2; 3|]
// elements in arrays are mutable
myArray[1] <- 4 // [|1; 4; 3|]
|
Console input
printf "Enter a value: "
let input = Console.ReadLine()
printfn "Entered value: %s" input
|
.vscode/launch.json |
{
"configurations": [
{
"console": "integratedTerminal" // // switch from internalConsole to integratedTerminal to allow console input in VS code
}
]
}
|
Dev env
- VScode
- Ionide for F# extension → intellisense
- fantomas-fmt → format F#
Create launch and tasks
- Disable the Ionide for F# extension
- Run → Run Without Debugging
- Select environment: .NET 5+ and .NET Core (this create the launch.json file)
- Open launch.json → Add Configuration → .NET: Launch .NET Core Console App
- Fill target-framework = net6.0 and project-name = myproject
- Run → Run Without Debugging
- Configure Task → Create tasks.json file from template → Select a Task Template: .NET Core