Does that mean there is no place to store state while running the interpreter and that I have to put the state elsewhere such as a file?&nbsp; I was hoping to avoid that as I&#39;m only prototyping at this stage and don&#39;t want to write a persistent layer just yet.<br>
<br>Thanks<br><br>-John<br><br><div class="gmail_quote">On Mon, Dec 8, 2008 at 11:51 AM, Thomas Davie <span dir="ltr">&lt;<a href="mailto:tom.davie@gmail.com">tom.davie@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c"><br>
On 8 Dec 2008, at 01:28, John Ky wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
<br>
Is the following safe?<br>
<br>
moo :: TVar Int<br>
moo = unsafePerformIO $ newTVarIO 1<br>
<br>
I&#39;m interested in writing a stateful application, and I wanted to start with writing some IO functions that did stuff on some state and then test them over long periods of time in GHCi.<br>
<br>
I was worried I might be depending on some guarantees that aren&#39;t actually there, like moo being discarded and recreated inbetween invocations of different functions.<br>
</blockquote>
<br></div></div>
Define safe... In this case though, I would guess it&#39;s not safe. &nbsp;The compiler is free to call moo zero, one or many times depending on its evaluation strategy, and when it&#39;s demanded. &nbsp;It&#39;s possible that your TVar will get created many times, and different values returned by the &quot;constant&quot; moo.<br>

<br>
That sounds pretty unsafe to me.<br>
<br>
Bob<br>
</blockquote></div><br>