<div dir="ltr">
<div><div class="gmail-"><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>Hi,</span></span></div></div><div class="gmail-"><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>In the last couple of days, I've been toying with the thought of an operating system in which programs (or more accurately, any process) has a distinct type which limits</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>its use of the machine. For example, `echo` (String -> String) won't be able to print an output without a second program which would handle changing stdout.</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span><br></span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>I think it could "break down" the IO monad into other structures that are better at specifying what is changing: A file is read / memory written / etc.</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>I do, however, not sure how to incorporate drivers (which handles IO and external devices) into this. Giving them an `IO a` type feels like cheating. I would be much cooler if there was a way</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>to treat them like the `echo` function from earlier.</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span><br></span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>What are your thoughts/suggestions? I'll be happy to hear them.</span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span><br></span></span></div><div class="gmail-public-DraftStyleDefault-block gmail-public-DraftStyleDefault-ltr"><span><span>Yotam<br></span></span></div></div></div>

</div>