и в Хаскеле IO встроено в язык де факто, так что его не надо определять. вот та штука, похожая на State RealWorld — это только формальное определение для рассуждений, а не тело, которое подставляется во время компиляции
логично. поэтому я и написал про другие языки. целесообразность практической реализации IO в хаскелле "с нуля" я тоже не пытаюсь доказать
более того, я не совсем понимаю, в чем именно со мной вы спорите. С чем, что можно реализовать IO без FFI? тогда был бы благодарен за контрпример. С тем, что можно в других языках тривиально сделать конструкцию, обладающую свойствами хаскельного IO?