On Sunday, April 13, 2014 21:21:02 Daniel Murphy wrote: > "Jonathan M Davis" wrote in message > news:mailman.112.1397351369.5999.digitalmars-d-le...@puremagic.com... > > > Honestly, I would have considered that to be a bug. Converting the return > > type > > to a different level of mutability based on purity is one thing. > > Automatically > > casting the return value just because the function is pure is another > > matter > > entirely. Clearly, it can work, but it seems incredibly sloppy to me. > > It's not a bug, and it's not another matter entirely - it's the same thing > as converting a call expression, just on the inside instead of the outside.
Doing the conversion on the caller's side enables code that wouldn't otherwise work - particularly if you're not intimately familiar with what guarantees pure really gives you. Doing the conversion inside the function doesn't really buy you much of anything IMHO and promotes being lazy with types. It may not be a big deal, but I don't think that it's really a good idea either. So, while from the perspective of what the compiler can guarantee, it may be the same from both sides, I don't think that it's the same at all with regards to how it affects the programmer or what code they need to write (or should write). - Jonathan M Davis