On 2/2/16 8:42 PM, Chris Wright wrote:
On Tue, 02 Feb 2016 15:41:07 -0800, H. S. Teoh via Digitalmars-d wrote:

Furthermore, since const provides actual guarantees that the called
function isn't going to touch the data, this opens up optimization
opportunities for the compiler.

const opens up optimizations at the call site, so it's useful. immutable
is useful on top of const because it allows optimizations within the
function.

Want to memoize a function? If it takes const(char[]), you have to copy
your input and later check the entire array to see if the parameters
match a previous call. If it takes an immutable(char[]), you can compare
pointers.

This isn't exactly right. If I call a function with "hello", I'd want it to memoize if the function is called with "hello" that resides elsewhere.

What *is* true is that you can safely save the array (pointer + len) of "hello" and be sure it won't change when you check against it later. With const(char[]), you'd need to allocate a new block to make sure it doesn't change.

-Steve

Reply via email to