• Stars
    star
    1
  • Language
    F#
  • Created about 3 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

F# hints

F# CheatSheet

# Create new project
dotnet new console -n test1 -lang f#

Tweets

Samples

Codes

// Functions
let linear x = 2.0 * x
let quadratic x = x ** 2

// read a line on console
open System
let line = Console.ReadLine()
printfn "Read line %s" line

// Defining a list
let lista = [
    2
    3 ]

// List just par numbers from a descrecent list
[9 .. -1 .. 1] |> List.filter (fun x -> x % 2 = 0)

// Calling an API using the F# Data Http utility:
// Source: https://stackoverflow.com/questions/62408621/f-with-http-fs-not-able-to-execute-graphql-apis
Http.RequestString
  ( "https://swapi.graph.cool", 
    httpMethod="POST", headers=[ HttpRequestHeaders.ContentType("application/json") ],
    body=TextRequest("{\"query\": \"{ allFilms { title } }\"}") 

printfn

// hello world
open System
[<EntryPoint>]
let main argv =
    let square x = x * x
    let squared = List.map square [1;2;3;5;7]
    printfn "%A" squared
    0 // return an integer exit code

Array.map (fun x -> -x) [|0..9|];;
// val it : int [] = [|0; -1; -2; -3; -4; -5; -6; -7; -8; -9|]

List.map (fun x -> -x) [0..9];;
// val it : int list = [0; -1; -2; -3; -4; -5; -6; -7; -8; -9]

Seq.map (fun x -> -x)  { 0..9 };;
// val it : seq<int> = seq [0; -1; -2; -3; ...]
Format Type
%s string
%i integer
%u unsigned integer
%f float
%b boolean
%O other objects
%o octal
%x lowercase hex
%X uppercase hex
%A native F# types

functions

open System
let ``print emoji  🐣`` =
    printfn "🐣"
``print emoji  🐣``

F# Types with .NET 5

Source

Just as a quick update, various things do work.

This example now works in .NET 5:

open System
open System.Text.Json


[<EntryPoint>]
let main _argv =

    let m1 = Map.empty<string, string> |> Map.add "answer" "42"
    let json1 = JsonSerializer.Serialize(m1)
    printfn "JSON1 %s" json1
    
    let m2 = Map.empty<string, Version> |> Map.add "version" (Version("10.0.1.1"))
    let json2 = JsonSerializer.Serialize(m2)
    printfn "JSON2 %s" json2

    0

F# records and anonymous records now appear to work (nested records example):

open System
open System.Text.Json

type Person = { Name: string; Age: int }
type Gaggle = { People: Person list; Name: string }

[<EntryPoint>]
let main _argv =

    let r1 =
        {
            People =
                [ { Name = "Phillip"; Age = Int32.MaxValue }
                  { Name = "Ryan Nowak"; Age = Int32.MinValue } ]
            Name = "Meme team"
        }

    let r2 =
        {|
            r1 with
                FavoriteMusic = "Dan Roth's Banjo Bonanza"
        |}

    printfn $"{JsonSerializer.Serialize r1}"
    printfn $"{JsonSerializer.Serialize r2}"

    0

But DUs are still missing. FSharp.SystemTextJson is still the way to serialize F# union types.

C# Interop

// ResizeArray is the name of the #CSharp generic list class in #FSharp, so you can do:
let csList = ResizeArray  [| rec01; rec02; rec03 |] 

Using use

// Fonte: https://twitter.com/LucasTeles42/status/1317945856641978375
open System

let main =
  use recurso = {
    new IDisposable with
      member this.Dispose() =
        printfn "liberando recurso..."
  }
  printfn "acabou..."

Using Feliz

List Comprehension

// Source https://twitter.com/LucasTeles42/status/1335981686794936320
> let items x = [
-     1
-     2
-     if x then 3
-
-     let n = 10
-     yield! [4..n]
-
-     n + 1
-
-     for numero = n + 2 to n * 2 do
-         numero
- ];;
val items : x:bool -> int list

> printfn "%A" (items true);;
[1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20]
val it : unit = ()

Sync/Async

let work = async { do printfn "Hi" }

work
|> Async.RunSynchronously

FSI (F# Repl)

Started with:

dotnet fsi

Options:

  • #help - Exibe informações sobre as diretivas disponíveis.
  • #I - Especifica um caminho de pesquisa de assembly entre aspas.
  • #load - Lê um arquivo de origem, compila e o executa.
  • #quit - Finaliza uma sessão do F# interativo.
  • #r - Faz referência a um assembly.
  • #time ["on"|"off"] - Por si só, #time alterna se deve exibir informações sobre o desempenho. Quando habilitado, o F# interativo mede informações em tempo real, em tempo de CPU e de coleta de lixo de cada seção do código que é interpretado e executado.

References:

More Repositories

1

neoline.vim

Status Line for Neovim focused on beauty and performance ✅🖤💙💛
Lua
189
star
2

fsharp-cheatsheet

An updated cheat sheet for F# 🔷🖤💙💛
183
star
3

vim-emoji-icon-theme

Emoji/Unicode Icons Theme for Vim and Neovim with support for 40+ plugins and 380+ filetypes 🎨🖤💙💛
Vim Script
77
star
4

vim-matchit

vim-matchit 🖇🖤💙💛
Vim Script
54
star
5

awesome-make

A list about Make resources 🛠
46
star
6

image_preview.nvim

Image Preview for Neovim 🖼
Lua
44
star
7

fsharp_vids

Video collection about F# 🔷🎞️
38
star
8

neofsharp.vim

Basic F# support for (Neo)Vim 🔷
Vim Script
34
star
9

awesome-fsharp-project-templates

Awesome F# Project Templates 🔷🖤💙💛
19
star
10

neovcs.vim

VCS support for Neovim 🌱
Vim Script
18
star
11

hotchocolate_fsharp_sample

GraphQL server using .NET 6, F# and Hot Chocolate 🍫
18
star
12

vim-hackernews

Hacker News plugin for Vim 📰🖤💙💛
Python
17
star
13

vim-pomodoro

🍅 Vim plugin for the Pomodoro time management technique
Vim Script
14
star
14

falco_graphql_sample

Falco GraphQL Sample 🐣🖤💙💛
F#
14
star
15

awesome-fable-react-native

An awesome list about to use Fable with ReactNative 🧚‍♀️
11
star
16

eclipse-gotofile-plugin-kai

🌕 Modified version from Muermann's Goto File plugin
Java
11
star
17

vim-grimmjow

🌴 Vim theme
Vim Script
9
star
18

suave_graphql_sample

Suave GraphQL Sample
F#
8
star
19

awesome-bugs

Awesome Bugs 🐛
6
star
20

Vim-Autoclose

✒️ Inserts matching bracket, paren, brace or quote
Vim Script
6
star
21

lightlang

General purpose programming language made for peace 🖤💙💛
5
star
22

awesome-fsharp-pt

Uma lista com conteúdos sobre F# em Língua Portuguesa
4
star
23

vim-tetris

Tetris para Vim
Vim Script
3
star
24

nerdtree-terminal

nerdtree plugin terminal support
Vim Script
2
star
25

Sublime-Theme-Black-Sidebar-Icons

🍫 A black theme for sidebar from Sublime with icons.
2
star
26

dbunit

🍁 DBUnit
Java
2
star
27

lsp_installer

Lua
1
star
28

adelarsq.github.io

Adelar's Home Page
1
star
29

jms-demo-play-2.1

📧 jms-demo with play 2.1
Java
1
star
30

nerdtree-fzf

NERDTree Plugin to use with FZF
Vim Script
1
star
31

nerdtree-far

Nerdtree Plugin to use with Far
Vim Script
1
star
32

showmarks.nvim

Show marks on current buffer
Fennel
1
star
33

Vim-Tetr1s

📊 Tetris Game for Vim
1
star
34

ignored_files.vim

Plugin to ignore filetypes and buffers for a number of plugins
Vim Script
1
star
35

fsharp_samples

F# Samples
F#
1
star
36

learn_fsharp_tweets

Learn F# Tweets 🔷
1
star
37

BufJump

🚀 Mapping to manage jump between buffer
Vim Script
1
star
38

Snake.vim

🐍 Snake Game for Vim
Vim Script
1
star