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 が必須ではないかと予想しています。