I don&#x27;t think &quot;fighting spam&quot; is really what the GP was talking about.<p>A common &quot;best practice&quot; with cryptographic material is to hold it as short a time as possible (um, but garbage collection makes that hard), and zero it before releasing it (but immutability gets in the way).  That means that, in a language like Haskell, you&#x27;re going to leak crypto material into the free memory pool unless you break the language paradigm to prevent it.  Worse, you have to remember to break the language paradigm <i>everywhere</i> you need to.<p>In C++, you&#x27;d just wipe it with zeroes in the destructor, and use RAII to make sure it&#x27;s freed when you don&#x27;t need it any more.  In Java, you have to explicitly overwrite it on your way out of the block (maybe with a &quot;finally&quot; clause).  But in Haskell, you can&#x27;t overwrite it (yeah, you actually can, but still...)