Как действительно реализована монада IO? В смысле, какова будет фактическая реализация функции main
?
Как я могу назвать функцию haskell (IO) с другого языка, и мне в этом случае нужно поддерживать IO сам?
Использует ли main
действия ввода-вывода (лениво) в качестве ссылок, а затем вызывает их?
Или это работа переводчика, когда он нашел действия на своем пути, которые они могут назвать?
Или может быть что-то еще?
Есть ли хорошая реализация монада IO на разных языках, которая может помочь глубоко понять, что происходит в основной функции?
Edit:
Такой hGetContents
меня смущает, и я не знаю, как действительно выполняется IO.
Хорошо, скажем, у меня очень простой чистый интерпретатор Haskell, у которого, к сожалению, нет поддержки IO, и для любопытства я хочу добавить к нему эти действия IO (трюки также t23). Трудно получить его от GHC, Hugs или других.