Professional Documents
Culture Documents
What is F#?
Microsoft Multi-paradigm Language
CLR – All the .NET platform benefits
First class language in to Visual Studio 2010
1
3/12/2009
2
3/12/2009
3
3/12/2009
List of
Policies
Vehicle Vehicle
4
3/12/2009
Process List of
Policies
Basic Policy
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
5
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
6
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
7
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
8
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
9
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
10
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
11
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
12
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
13
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
14
3/12/2009
let BasicPolicyFactor() =
lazy(
Seq.map force [AverageDriverFactor();
MultiPolicyCombinationDiscount();
CompanyCarDiscount();]
|> Seq.reduce (*)
)
(Lazy<decimal>)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let BasicPolicyFactor() =
lazy(
Seq.map force [AverageDriverFactor();
MultiPolicyCombinationDiscount();
CompanyCarDiscount();]
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
15
3/12/2009
let BasicPolicyFactor() =
lazy(
Seq.map force [AverageDriverFactor();
MultiPolicyCombinationDiscount();
CompanyCarDiscount();]
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let AverageDriverFactor() =
lazy(
let mutable accum = (decimal)0
for d in p.Drivers do
accum <- accum + (DriverFactor d).Force()
accum / (decimal)p.Drivers.Count)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
16
3/12/2009
let AverageDriverFactor() =
lazy(
let mutable accum = (decimal)0
for d in p.Drivers do
accum <- accum + (DriverFactor d).Force()
accum / (decimal)p.Drivers.Count)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let AverageDriverFactor() =
lazy(
let mutable accum = (decimal)0
for d in p.Drivers do
accum <- accum + (DriverFactor d).Force()
accum / (decimal)p.Drivers.Count)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
17
3/12/2009
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
18
3/12/2009
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
QueryRate rq
Parallel Coverage Coverage Coverage Coverage Coverage
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
19
3/12/2009
QueryRate rq
Parallel Coverage Coverage Coverage Coverage Coverage
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
QueryRate rq
Parallel Coverage Coverage Coverage Coverage Coverage
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
20
3/12/2009
QueryRate rq
Parallel Coverage Coverage Coverage Coverage Coverage
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
QueryRate rq
Parallel Coverage Coverage Coverage Coverage Coverage
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
21
3/12/2009
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
22
3/12/2009
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
23
3/12/2009
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let DriverFactor d =
lazy(
[BaseRate d;
DriverClassFactor d;
InsuranceScoreFactor d;
GoodStudentFactor d;
GrangeLifeFactor d;
AwayAtSchoolFactor d]
|> Seq.map force
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
24
3/12/2009
let AverageDriverFactor() =
lazy(
let mutable accum = (decimal)0
for d in p.Drivers do
accum <- accum + (DriverFactor d).Force()
accum / (decimal)p.Drivers.Count
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
let AverageDriverFactor() =
lazy(
let mutable accum = (decimal)0
for d in p.Drivers do
accum <- accum + (DriverFactor d).Force()
accum / (decimal)p.Drivers.Count
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
25
3/12/2009
let BasicPolicyFactor() =
lazy(
Seq.map force [AverageDriverFactor();
MultiPolicyCombinationDiscount();
CompanyCarDiscount();]
|> Seq.reduce (*)
)
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
26
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
27
3/12/2009
List of
Process Policies
Basic
Policy
Factor
Multi-
Avg Driver Company Zipcode
policy
Factor Car Factor Factor
Factor
Driver Driver
Factor Factor
Process List of
Policies
Basic Policy
Factor
Driver Driver
Factor Factor
28
3/12/2009
1 5 10 20 40 50
C# 3 10 15 38 78 95
F# 1 4 7 15 20 35
#light
let RealWorld F# = Concurrent applications
Amanda Laucher
Amanda.Laucher@SophicGroup.net
pandamonial.com
Twitter: pandamonial
29