昔、 RSpec の入門とその一歩先へ - t-wadaの日記 を読んで「自分だったらどうつくるかなー」と考えていた。 そして時が経ち、パーサコンビネータを知った今となっては、簡単なものであればこれでいいんじゃないかと思っている。 というわけで、以下は F# の ParsecClone というライブラリを使った例。 フィルタリング対象の文字列を発見する 利用者が指定したワードにマッチするようにすればよい。 // cutting : string -> string // word: NGワード let dirtyToTurn cutting word = matchStr word |>> cutting マッチしたら伏せ字に入れ替える関数を適用すれば、それらしいものになる。 NGワードを複数登録できるようにする NGワードリスト内のどれかにマッチするようにする。 // words: NG