Yuji Yamamoto (山本悠滋)
2018/08/18 プリキュアハッカソン NewStage
cure-index.json
を完成させた話です軽いデモ
$ stack exec ghci -- -interactive-print="Text.Show.Unicode.uprint"
> import ACME.PreCure
> printEpisode $ transform (Mirai, Liko) (Mofurun LinkleStoneDia)
詳しくはこっち👇に書きましたがここでも軽く紹介
"キュアミラクル"
ぐらい使い回さんでもええやろ、って気もしますが、当時の私は狂ったように共通化してました😅※Words.hsについては面倒なので書き換えはせず
修正前との重要な違い:
StringScanner
を使うと割と近いものができるよ!おことわり hask(_ _)eller
10進数の文字列を受け取って、整数を返すパーサー
123
と、残りの文字列"abc"
を返す以上を組み合わせて、
10進数の文字列を受け取った後、カンマを受け取り、整数を返すパーサー
を作る
many
を使って、
10進数の文字列を受け取った後、カンマを受け取り、整数を返すパーサー
から、
カンマで区切られたたくさんの整数のリストを返すパーサー
を作る
digits
は、パースした結果を直接整数(Int
)として返している*
にあたるmany
が、必ず強欲なマッチになる(後述)\A
(あるいは
^
)を着けなければならないイメージ\A.*(マッチさせたい文字列)
を書けばよい話ではなく、\A(マッチさせたくない文字列)*(マッチさせたい文字列)
みたいに書かないといけない*
にあたるmany
が強欲なマッチになる」ため、\A.*(マッチさせたい文字列)
と書くと、.*
が(マッチさせたい文字列)
がマッチさせたい文字列まで飲み込んでしまう任意のパーサーコンビネーターを
文字列の中間でも
マッチするよう変換するライブラリーを作りました!
(マッチさせたくない文字列)
をスキップすることができる
こちらのコミット時点のパーサーで、
同時点のTypes.hsから、
cure-indexで使用するGirl
という型の値を取り出します!
stack build :migrate2cure-index
stack exec migrate2cure-index