# Why freeze memoization?

**URL:** <https://www.ruby-forum.com/t/why-freeze-memoization/193824>\
**Category:** Rails\
**Created:** [August 25, 2010, 4:38am UTC](https://www.ruby-forum.com/t/why-freeze-memoization/193824 "2010-08-25T04:38:53Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [August 25, 2010, 4:38am UTC](https://www.ruby-forum.com/t/why-freeze-memoization/193824/1 "2010-08-25T04:38:53Z")

</div>

I was wondering what was the reasoning behind freezing the Memoizable  
return values?

Thanks

---

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [August 25, 2010, 8:56am UTC](https://www.ruby-forum.com/t/why-freeze-memoization/193824/2 "2010-08-25T08:56:58Z")

</div>

On Aug 25, 3:32 am, trans [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I was wondering what was the reasoning behind freezing the Memoizable  
> return values?

to protect you from stuff like

foo = bar.memoized\_method  
foo.gsub!(…)  
#do something with foo

If you did this and foo wasn’t frozen then you’d alter what  
memoized\_method returned for all future calls - probably not what was  
intended

Fred

---

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [September 19, 2010, 9:06am UTC](https://www.ruby-forum.com/t/why-freeze-memoization/193824/3 "2010-09-19T09:06:21Z")

</div>

On Aug 25, 2:55 am, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> to protect you from stuff like
> 
> foo = bar.memoized\_method  
> foo.gsub!(…)  
> #do something with foo
> 
> If you did this and foo wasn’t frozen then you’d alter what  
> memoized\_method returned for all future calls - probably not what was  
> intended

Makes sense. Thanks.
