Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Phantom
- type Reader = interface end
- type Writer = interface end
- type Agent<'T> = Agent of string
- let makeReader name : Agent<Reader> = Agent name
- let makeWriter name : Agent<Writer> = Agent name
- let allAgents (a:Agent<_>) = match a with | Agent name -> printfn "Agent %s visiting." name
- let onlyWriters (a:Agent<Writer>) = match a with | Agent name -> printfn "Agent %s writing." name
- let main () =
- let r = makeReader "reader"
- let w = makeWriter "writer"
- allAgents r
- allAgents w
- onlyWriters r
- onlyWriters w
- do main ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement