Writerモナドの使い道 [実行回数]

def hoge(): Writer[Int, String] =
  for {
    _ <- Writer.tell(1)
    r <- Writer.value[Int, String]("hoge")
  } yield r

val w: Writer[Int, List[String]] = List.range(0, 100).map(_ => hoge()).sequence
println(w.run) // (hoge()実行回数, 結果のリスト)