Advertisement
Guest User

Untitled

a guest
Jun 5th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.57 KB | None | 0 0
  1. open System
  2.  
  3. [<AbstractClass>]
  4. type B() =
  5.     abstract member dString: unit -> string
  6.    
  7. type T1() =
  8.     inherit B()
  9.     override this.dString() = "T1"
  10.  
  11. type T2() =
  12.     inherit B()
  13.     override this.dString() = "T2"
  14.  
  15. type PrinterG = | F of B
  16.                 | G of B with
  17.     member self.GenericMethod() =
  18.         match self with
  19.         | F a ->
  20.             printf "GENERIC %A" (a.dString())
  21.         | G a ->
  22.             printf "GENERIC %A" (a.dString())
  23.  
  24. [F(T1()); F(T2()); G(T1()); G(T2())]
  25. |> List.iter (fun (f:PrinterG) -> f.GenericMethod())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement