User Tools

Site Tools


projects:fsharp_workshop

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
projects:fsharp_workshop [2015/03/13 23:35] mkuciaprojects:fsharp_workshop [2015/04/18 17:32] mkucia
Line 1: Line 1:
 ====== F# workshop ====== ====== F# workshop ======
 +{{:projects:fsharp_logo.png?nolink|}}
 +===== Prerequisites =====
 +    * https://www.linqpad.net/ or anything that can execute a REPL((Read, Evaluate, Print Loop))
 +<hidden ↘ alternatives>
 +    * Try F# in browser: http://www.tryfsharp.org/Create
 +    * Use Visual Studio https://www.visualstudio.com/
 +    * Get a full distribution: http://fsharp.org/use/windows/ OR http://fsharp.org/use/linux/
 +</hidden>
  
 +===== Agenda =====
  
-  * f(x) = Hello_Word +  * hello(x) 
-  * On Testing and +  * Type providers (strongly typed) 
 +  * Matching 
 +  * Options
  
  
-<wrap hi>highlighted</wrap>+===== hello(x) ===== 
 +<code fsharp> 
 +let hello = printf "Hello World" 
 +hello 
 +</code> 
 + 
 +F# (pronounced “F Sharp”) is 
  
 <WRAP group> <WRAP group>
 <WRAP half column box> <WRAP half column box>
-Pros: 
   * Open Source   * Open Source
-  * Multi platform (Mono, .NET core) +  * Multi platform 
-  * Modern, rising usage +  * Modern, rising popularity 
-  * Lazy evaluation+  * Lazy evaluated
   * Reusable   * Reusable
-  * Reduced code+  * Concise (See [[http://theburningmonk.com/2014/12/seven-ineffective-coding-habits-many-f-programmers-dont-have/|signal-to-noise ratio]])
   * Strongly typed   * Strongly typed
 +  * Functional first
 +    * Use functional to write easy to test and understand code
 +    * Use imperative for performance and compatibility
 +    * Use objective for organization and encapsulation
 +  * Compiled
 </WRAP> </WRAP>
  
 <WRAP half column box> <WRAP half column box>
-Cons: +  * Not suitable for real time (unpredictable performance) 
-  * Not suitable for real time +  * Hard to optimize (Functional languages fundamentally don't model how your computer works) 
-  * requires different thinking+  * Functional first (different thinking process, you will need to re-learn)
 </WRAP> </WRAP>
 </WRAP> </WRAP>
 +programming language for writing simple code to solve complex problems. 
 +
 +<code fsharp>
 +let hello x = printfn "Hello %s" x
 +hello "world"
 +</code>
 +
 +Introducing pipeline operator:
 +<code fsharp>
 +let hello x = printfn "Hello %s" x
 +"World" |> hello
 +</code>
 +
 +<hidden pipeline operator definition>
 +How to define the operator? 
 +<code fsharp>
 +let inline (|>) x f = f x
 +</code>
 +</hidden>
 +
 +<code fsharp>
 +let square x = x * x
 +let subtract x y = x - y
 +</code>
 +
 +<code fsharp>
 +let ``complicated stuff`` x =
 +    printfn "%d" (add 5 (square x))
 +</code>
 +
 +<code fsharp>
 +let ``another complicated stuff`` x =
 +    x |> square |> subtract 5 |> printfn "%d"
 +</code>
 +
 +<code fsharp>
 +let equation x =
 +
 + |> (fun y -> y * y ) 
 + |> (fun y z -> y - z ) 5
 + |> printfn "%d"
 +</code>
 +
 +Note that F# uses indentation to indicate block structure. Find out more [[http://fsharpforfunandprofit.com/posts/fsharp-syntax/|here]].
  
-<hidden ↘ C# equivalent>Since you want to know more, here is an explanation with more details […]</hidden> 
  
 +===== References =====
 +  * http://fsharp.org/
 +  * http://fsharp3sample.codeplex.com/wikipage?Title=MicroSamples
 +  * http://en.wikibooks.org/wiki/F_Sharp_Programming
 +  * http://fsharp.org/specs/language-spec/3.0/FSharpSpec-3.0-final.pdf
 +  * http://www.mindscapehq.com/blog/index.php/2012/03/27/5-12-f-features-every-c-programmer-should-lust-after/
 +  * [[https://msdn.microsoft.com/en-us/library/dd233228.aspx|MSDN Symbol and Operator Reference (F#)]]
 +  * https://github.com/rookboom/SharpShaders/wiki/Why-write-shaders-in-F%23%3F
 +  * http://www.quora.com/What-are-some-limitations-disadvantages-of-functional-programming
 +  * http://fsharpforfunandprofit.com/site-contents/
 +  * http://research.microsoft.com/en-us/projects/kiwi/
 +  * [[https://www.youtube.com/watch?v=hMjv8m--W28|Ten things F# can do, and C# can't - Liam McLennan @ DDD Brisbane 2013]]
projects/fsharp_workshop.txt · Last modified: 2015/05/02 12:45 by mkucia