69 people like it.

Strategy pattern

Strategy pattern in F#

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
let quicksort l = 
    printfn "quick sort"
let shellsort l = 
    printfn "shell short"
let bubblesort l = 
    printfn "bubble sort"
type Strategy() = 
    let mutable sortFunction = fun _ -> ()
    member this.SetStrategy(f) = sortFunction <- f
    member this.Execute(n) = sortFunction(n)

let stragegy() = 
    let s = Strategy()
    s.SetStrategy(quicksort)
    s.Execute([1..6])
val quicksort : l:'a -> unit

Full name: Script.quicksort
val l : 'a
val printfn : format:Printf.TextWriterFormat<'T> -> 'T

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
val shellsort : l:'a -> unit

Full name: Script.shellsort
val bubblesort : l:'a -> unit

Full name: Script.bubblesort
Multiple items
type Strategy =
  new : unit -> Strategy
  member Execute : n:int list -> unit
  member SetStrategy : f:(int list -> unit) -> unit

Full name: Script.Strategy

--------------------
new : unit -> Strategy
val mutable sortFunction : (int list -> unit)
val this : Strategy
member Strategy.SetStrategy : f:(int list -> unit) -> unit

Full name: Script.Strategy.SetStrategy
val f : (int list -> unit)
member Strategy.Execute : n:int list -> unit

Full name: Script.Strategy.Execute
val n : int list
val stragegy : unit -> unit

Full name: Script.stragegy
val s : Strategy
member Strategy.SetStrategy : f:(int list -> unit) -> unit
member Strategy.Execute : n:int list -> unit

More information

Link:http://fssnip.net/7k
Posted:6 years ago
Author:Tao Liu
Tags: design patterns