Still don't like touch.  Can I talk you into:

```scala
/** Note the value is lazy so it is safe to do:
 * {{{  ensure(k, f(k)).get(k) }}}
*/
def ensure(k: K, v: => V): Cache[K,V]
```