Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.