消費して状態は維持するというお粗末な実装でいきます。}使用例はこのような感じです。consumeAll(input).run(0).isDefined使用してみます。再帰的に呼び出しているため、長い入力文字列に対してはスタックオーバーフローします。利用することで回避できます。それに当たるみたいです。consumeAllTailRec(input).run(0).isDefinedこれで先程の文字列も処理できるようになりました。false長さの問題が解決できたので、次はちゃんと遷移規則に基づいて処理を行うようにします。構成されるクラスで表現します。使用する感じになるようです。扱うように変更します。機械的に処理していくだけという感じでいけました。型を明示的に指定しないとうまくコンパイルが通らなかったりするのがちょっと負けた気分です。場合と大差はありません。逆に言えば概念さえわかっており複雑なことをやらなければ補完におんぶにだっこで何とかなりそうに思いました。