Open2
読者コミュニティ|競プロ盆栽.hs
本の感想や質問をお気軽にコメントしてください。
宣言的な入力処理
tanakh さんのマクロ や proconio のように宣言的に入力処理できると格好良いよね、という話題を振って頂きました。
適用でパーサを合成する仕組みは作ったことがあります:
(!c, !x) <- auto @(Char, Int)
一方、 proconio は auto 以上に便利です。事前にパースした変数を使って、他の変数のパースの方法を指定できます:
use proconio::input;
input! {
    n: usize,
    m: usize,
    a: [[i32; n]; m] // `a` is Vec<Vec<i32>>, (m, n)-matrix.
}
ここでは 2 次元配列 a のパースに n, m を利用しています。 Haskell でここまで綺麗な書き方をするためには、 Template Haskell が必須ではないかと予想しています。