Yotam Ohad
2018-10-05 04:36:45 UTC
Hi,
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
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.
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.
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
to treat them like the `echo` function from earlier.
What are your thoughts/suggestions? I'll be happy to hear them.
Yotam
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
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.
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.
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
to treat them like the `echo` function from earlier.
What are your thoughts/suggestions? I'll be happy to hear them.
Yotam