I was thinking along those lines, but as an addition not a replacement for get. Also with an optional parameter for absent:

opt.do((value) {
  // value is useful!
}, absent: () {
  // sad, no value
})

Not sure about the name though.

I suspect we do need a plain "get" so that you don't have to rewrite everything that uses optionals. (Similar to presenting both functional and procedural methods for collections).