def mapM [Monad m] (f : α → m β) : List α → m (List β)
| [] => pure []
| x :: xs =>
f x >>= fun hd =>
mapM f xs >>= fun tl =>
pure (hd :: tl)
#eval mapM (m := Id) (· + 1) [1, 2, 3, 4, 5]
#eval show IO Unit from IO.println "hello world"
#reduce show IO Unit from IO.println "hello world"