I also recommend you look at the recent tutorial If you are not 100% sure about `do` blocks, `<-` notation and `return`, you should read this, which explains the relationship between do notation and Action.
I think that return was added originally just as syntactic sugar, so you could have a do ... return statement. I recall that in Haskell there also exists an applicative do extension, but I don’t think we have this in DAML.