Skip to content

Instantly share code, notes, and snippets.

@jigargandhi
Created September 16, 2018 05:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jigargandhi/ef5c1f7d444c5257503ef3010e8aaf99 to your computer and use it in GitHub Desktop.
Save jigargandhi/ef5c1f7d444c5257503ef3010e8aaf99 to your computer and use it in GitHub Desktop.
Decorator pattern in F#
let logger (f: 'a->'b) (valA:'a) =
printfn "Pre"
let result = f valA
printfn "Post"
result
let add5To x =
printfn "calling add5To"
x+5
let decoratedAdd = logger add5To
decoratedAdd 12
|>printfn "%d"
let add x y =
printfn "calling add"
x + y
let decoratedAdder = logger add
decoratedAdder 1 4
|>printfn "%d"
let twoParamedLogger (f:'a->'b->'c) (a:'a) (b:'b) =
printfn "Pre"
let result = f a b
printfn "Post"
result
let decoratedAdd2 = twoParamedLogger add
decoratedAdd2 1 4
|>printfn "%d"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment