Advertisement
Guest User

The F# Zoo

a guest
Aug 27th, 2015
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.67 KB | None | 0 0
  1. [<AbstractClass>]
  2. type Animal(name : string) as this =
  3.     do
  4.         let t = this.GetType()
  5.         printfn "Creating an animal called %s of type %A!" name t
  6.  
  7.     abstract member say: unit -> string
  8.  
  9. type Giraffe(name) =
  10.     class
  11.         inherit Animal(name)
  12.         let sound = "cough"
  13.         override this.say() = sound
  14.     end
  15.  
  16. type Tiger(name) =
  17.     class
  18.         inherit Animal(name)
  19.         let sound = "growl"
  20.         override this.say() = sound
  21.     end
  22.  
  23. let doEvil (a : Animal byref) =
  24.     a <- new Tiger("Tony")
  25.  
  26. let main =
  27.     let mutable g = Giraffe("Fred") :> Animal
  28.     doEvil(&g)
  29.     printfn "The animal says, \"%s\"!" (g.say())
  30.     ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement