On 6/18/07, Andrew Coppin <andrewcoppin@btinternet.com> wrote:
Pasqualino 'Titto' Assini wrote:
> I think that we should not underestimate the transforming power of dogged
> determination.
>
> Think of Linux: only a terminal idiot could have conceived the plan of writing
> from scratch a clone of a 20 years old operating system (Unix) when everybody
> knew that momentum was on the side of the weaker solution (Microsoft) in the
> PC market and on the many existing commercial Unix versions in the
> professional market.
>
> Well, we all know what that stupid idea has led to. I certainly do, as I am
> writing this message under Linux.
>

That reminds me... Somebody should write an *OS* in Haskell! :-D

If that happened, then maybe at last I'd be able to have a choice other
than M$ Windows (with all it's well-documented faults), and Unix (with
its legendary unfriendliness and unecessary complexity).

OTOH... how the heck do you write an operating system in a language that
doesn't even support I/O? :-S

Well, there hasn't been a lot of work done on the subject but you probably should look at
http://programatica.cs.pdx.edu/House/
Now if you're seriously asking how one would do it, the basic approach taken in the paper was to create a monad H that was a controlled subset of IO & that did all the fundamental interactions with the the hardware.  The operations of H, as with IO, have to be primitives in the runtime that you're using and probably written in C or assembly.