a = 10
b = function() { return expensive_computation(a) }
Now, even if you can call b without parens, it still has to redo the expensive calculation every time you access it (because a might have changed... even if it hasn't).The "destiny" operator is more like
a = 10
b = function() {
persistent cached_value = null
if is_null(cached_value) or has_changed(a) {
cached_value = expensive_computation(a)
}
return cached_value
}
but instead of that, you get to write (in this totally fictional programming language) a = 10
b <- expensive_computation(a)
and have the compiler take care of the caching and updating for you.