Complicated, time expensive computed properties can be cached using the following pattern.
var a = Cached(0) {
    (a: Int) -> Int in
    print("did calculate")
    return a + 100
}
// Prints "did calculate"
print(a.calculated)
// Prints "100"
a.value = 10
print(a.calculated)
// Prints "did calculate\n110"