projects:fsharp_workshop
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
projects:fsharp_workshop [2015/04/17 21:35] – mkucia | projects:fsharp_workshop [2015/04/17 23:03] – mkucia | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== F# workshop ====== | ====== F# workshop ====== | ||
+ | ===== Prerequisites ===== | ||
+ | * https:// | ||
+ | <hidden ↘ alternatives> | ||
+ | * Try F# in browser: http:// | ||
+ | * Use Visual Studio https:// | ||
+ | * Get a full distribution: | ||
+ | </ | ||
- | | + | ===== Agenda ===== |
+ | |||
+ | | ||
* Type providers (strongly typed) | * Type providers (strongly typed) | ||
* Matching | * Matching | ||
* Options | * Options | ||
- | ===== How to use? Where to get? ===== | ||
- | Try F# in browser: | ||
- | http:// | ||
- | Want to get a full distribution? | + | ===== hello(x) |
- | http:// | + | |
- | + | ||
- | ===== [Hello] | + | |
<code fsharp> | <code fsharp> | ||
let hello = printf "Hello World" | let hello = printf "Hello World" | ||
+ | hello | ||
</ | </ | ||
- | ===== Why? ===== | + | <code fsharp> |
+ | let hello x = printfn "Hello %s" x | ||
+ | hello " | ||
+ | </ | ||
+ | <code fsharp> | ||
+ | let hello x = printfn "Hello %s" x | ||
+ | " | ||
+ | </ | ||
+ | '' | ||
+ | <code fsharp> | ||
+ | let square x = x * x | ||
+ | let subtract x y = x - y | ||
+ | </ | ||
+ | <code fsharp> | ||
+ | let ``complicated stuff`` x = | ||
+ | printfn " | ||
+ | </ | ||
+ | |||
+ | <code fsharp> | ||
+ | let ``another complicated stuff`` x = | ||
+ | x |> square |> subtract 5 |> printfn " | ||
+ | </ | ||
+ | |||
+ | <code fsharp> | ||
+ | let equation x = | ||
+ | x | ||
+ | |> (fun y -> y * y ) | ||
+ | |> (fun y z -> y - z ) 5 | ||
+ | |> printfn " | ||
+ | </ | ||
+ | |||
+ | ===== Why? ===== | ||
<WRAP group> | <WRAP group> | ||
Line 32: | Line 67: | ||
* Lazy evaluation | * Lazy evaluation | ||
* Reusable | * Reusable | ||
- | * Reduced code | + | * Reduced code (See [[http:// |
* Strongly typed | * Strongly typed | ||
</ | </ | ||
Line 39: | Line 74: | ||
Cons: | Cons: | ||
* Not suitable for real time (unpredictable performance) | * Not suitable for real time (unpredictable performance) | ||
+ | * Functional languages fundamentally don't model how your computer works ⇒ harder to optimize. | ||
* Different thinking process (you need to re-learn) | * Different thinking process (you need to re-learn) | ||
</ | </ | ||
</ | </ | ||
- | |||
- | <hidden ↘ C# equivalent> | ||
- | |||
- | ===== Pitfalls and drawbacks ===== | ||
- | Functional languages fundamentally don't model how your computer works. | ||
- | Harder to optimize. | ||
===== References ===== | ===== References ===== |
projects/fsharp_workshop.txt · Last modified: 2015/05/02 12:45 by mkucia