Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Introduction to F# Sushant aboutdev.com

Similar presentations


Presentation on theme: "An Introduction to F# Sushant aboutdev.com"— Presentation transcript:

1 An Introduction to F# Sushant Bhatia @aboutdev aboutdev.com aboutdev@gmail.com

2 Why learn F#?

3 Overview  Tour of F# in Visual Studio 2011  Fundamentals of F#  Functional Programming  Examples

4 F# in Visual Studio 2011 DEMO

5 Fundamentals of F#

6 SignatureNameDescriptionExample Unit () int, floatConcrete Type10, 6.04 ‘a, ‘bGeneric Type ‘a -> ‘bFunction Typefun x -> x + 1 ‘a * ‘bTuple TypeOrdered collection of values (1, 2), (“ten”, “soup”) ‘a listList TypeList of values[1; 2; 3], [1.. 3] ‘a optionOption TypeOptional valueSome(3), None Core Types

7  Default -> anonymous module  Nest Modules  Namespace Modules & Namespaces

8  Pass results of first function to second  Benefit  Chain functions together  Type inference Pipe Forward [1.. 10] |> List.map (fun x -> x * x) |> List.iter (printfn "%i")

9  Series of rules that will execute if a pattern matches the input.  Switch on Steroids Pattern Matching

10  Type  1 of a set of possible values  Used for complex data structures Discriminated Unions

11 Functional Programming

12 What is Functional Programming? A function is a rule that associates to each x from some set X of values, a unique y from another set Y of values. If f is the name of the function, y = f ( x ) f : X → Y

13 Functional programming is a programming paradigm that treats computations as the evaluation of mathematical functions and avoids state and mutable data. [Wikipedia]

14  All programs and procedures are functions and clearly distinguish incoming values from outgoing values  There are no variables or assignments – variables are replaced by parameters  There are no loops – replaced by recursive calls  The value of a function depends only on the value of its parameters and not on the order of evaluation or the execution path that led to the call  Functions are first-class values (viewed as values themselves, computed by other functions and can be parameters to functions) [Programming Languages. Kenneth C Louden]

15 1.First Class Functions 2.Higher Order Functions 3.Pure Functions 4.Recursion / Tail Recursion 5.Currying

16 1. First Class Functions a) Bind an identifier to a function definition let sqr = fun n -> n * n b) Store functions in data structures let aTuple = (sqr, fun n -> n + n) let aList = [sqr, fun n -> n + n]

17 2. Higher Order Functions a) Pass function as an argument let data = List.map (fun n -> n * n) [ 1; 2; 3; 4; ] b) Return function as value of function let sqrList = let funSqr = fun lst -> List.map (fun a -> a * a) lst funSqr

18 3. Pure Functions a)No Side Effects / Referential transparency b)Caching optimizations (memoization) c)No Data Dependency = order of execution is independent and can be parallel (thread-safe)

19 4. Recursion / Tail Recursion a) Iteration through recursive invocation let rec factorial x = if x <= 1I then 1I else let recResult = factorial (x-1I) let result = x * recResult result b) Tail recursion – Accumulators let factorialTail x = let rec tailRecFact x acc = if x <= 1I then acc else tailRecFact (x-1I) (acc * x) tailRecFact x 1I

20 5. Currying let add x y = x + y let addToTen = add 10 addToTen 5

21 Demo 1.Type Provider – Netflix 2.Units of Measure 3.Async / Parallel

22 Examples – Project Euler

23 How to Learn F# 1.Programming F# - Chris Smith 2.Beginning F# - Robert Pickering 3.Expert F# - Don Syme 4.http://blogs.msdn.com/b/dsyme 5.http://en.wikibooks.org/wiki/Programming:F_Sharp 6.http://projecteuler.net/ 7.http://fdatamining.blogspot.com/2009/12/f-online- videos.html 8.http://www.tryfsharp.org/Tutorials.aspx 9.http://fssnip.net/

24 Giveaway / Raffle 2 e-books


Download ppt "An Introduction to F# Sushant aboutdev.com"

Similar presentations


Ads by Google