上位概念: Haskell
Linear HaskellのIOモナドはメタプログラミングの一種である
https://twitter.com/hisaketM/status/1633054219191341058
IOモナドはある種のメタプログラミング、わかりやすい視点だと思うのだがあまりメタプログラミングという語を使って説明しているのを見たことがない
副作用のあるプログラムを書く(生成する)、副作用のないプログラム
このツイートを見てmain :: IO ()の意味がよく理解できた。haskellプログラムは副作用のあるプログラムを出力するのでmainの型がIO ()なのである。