>>721
モナドと言ったら>>=とかの演算子の方だと思ったんだが、IOな関数(アクション)の方なの?
それなら、getLineみたいなアクションは圏論的にはある種の変数扱い。

n = 1 ― 圏論では変数であり、引数無しの関数

値も、Haskellでは出来ないが強いて書いてみると

1 = 1 ― 1という名前の変数(値は1)、もしくは1という名前の1を返す引数無しの関数

そう考えると

getLine ― 外部からの入力(IOな値)が入った変数、もしくは(ry


>>711 の言う通り、型がIOなだけで、何も特別な関数というわけじゃ無い。
少なくともHaskellから見た扱いは純粋な関数と変わらない。
(それにも関わらず、main表層にアクションが自然と集まるというだけ)