module game open System.Collections.Generic open System.Collections open System.Console open Microsoft.FSharp.Collections open System.Linq open Casanova.Query worldEntity World = { Observer : Observer Create() = { Observer = Observer.Create(new Subject()) } } entity Subject = { Guard : bool rule Guard = wait 1 yield true yield false Create() = { Guard = false } } entity Observer = { Action : int Subject : Subject rule Action = wait Subject.Guard yield Action + 1 Create(Subject s) = { Subject = s Action = 0 } }