R
Size: a a a
VK
V
V
A
V
VS
V
AH
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.Core.dll"
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.Platform.dll"
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.dll"
open Hopac
open Hopac.Infixes
type Drink =
| Pivo
| Vodka
let barmen = Mailbox()
let alcoholRotation = function
| Pivo -> Vodka
| Vodka -> Pivo
let rec barmenAtWork previousStakan =
let chtoNalivaem = alcoholRotation previousStakan
barmen
>>= fun pustoyStakan ->
pustoyStakan *<= chtoNalivaem
>>-. chtoNalivaem
barmenAtWork
|> Job.iterateServer Pivo
|> queue
let dayVipitBlyat = job {
let stakan = IVar()
do! barmen *<<+ stakan
return! stakan
}
dayVipitBlyat
>>- printfn "И немедленно выпил %A"
>>=. timeOutMillis 1000
|> Job.foreverServer
|> queue
I
AH
И немедленно выпил Pivo
И немедленно выпил Vodka
И немедленно выпил Pivo
И немедленно выпил Vodka
И немедленно выпил Pivo
R
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.Core.dll"
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.Platform.dll"
#r "/Users/auh002i/.nuget/packages/hopac/0.4.1/lib/netstandard2.0/Hopac.dll"
open Hopac
open Hopac.Infixes
type Drink =
| Pivo
| Vodka
let barmen = Mailbox()
let alcoholRotation = function
| Pivo -> Vodka
| Vodka -> Pivo
let rec barmenAtWork previousStakan =
let chtoNalivaem = alcoholRotation previousStakan
barmen
>>= fun pustoyStakan ->
pustoyStakan *<= chtoNalivaem
>>-. chtoNalivaem
barmenAtWork
|> Job.iterateServer Pivo
|> queue
let dayVipitBlyat = job {
let stakan = IVar()
do! barmen *<<+ stakan
return! stakan
}
dayVipitBlyat
>>- printfn "И немедленно выпил %A"
>>=. timeOutMillis 1000
|> Job.foreverServer
|> queue
оГ
И немедленно выпил Pivo
И немедленно выпил Vodka
И немедленно выпил Pivo
И немедленно выпил Vodka
И немедленно выпил Pivo
AH
IC
I