モナドが難しい・・
はてなみたいに :titleと書いたらタイトルを取ってくるように、という処理の仕方は分かった。
しかし・・パーサの中でtitleを見つけたらネットワーク処理をして・・ってやると戻り値にIOがついてしまう。
どうすればいいか全く分からない・・。
ネットワーク部分
String -> IO String
パーサ部分
String -> HTML (String型の構造)
パーサの中からネットワークを呼び出すには
IO String -> String
の変換が必要で・・・うーん。
unsafePerformIOというのを見つけたけれど、設定ファイルを読む場合とかにとどめた方が、ということらしい。
ネットワークなんてもろに動的だもんなぁ・・。
これを使ってしまうと、パーサの中でネットワークが繋がらないとかいうエラーも普通に起こる。
パーサからHTMLを受け取る関数は結果をIO Stringで返すので簡潔に書けそうな気がするが・・。