Monads, applicatives and the semantics of perspective: a solution to the problems of logical omniscience and granularity