diff-match-patchを F# に移植してみた

世の中にはdiff-match-patchと呼ばれる、Google製の便利な文字列diffライブラリが存在します。

そんなdiff-match-patchですが、C#版はコードは存在するもののnugetにpublishされていません。 また、コードは.NET Framework 3.5以上である必要があるため、諸事情*1.NET Framework 2.0系である必要がある場合には使えません。 具体的にはLINQとかHashSetとかですね。

幸いなことに、F# を使えば.NET Framework 2.0をターゲットにしつつLINQにあるような関数やSetが使えます。 というわけで移植しました。

https://github.com/pocketberserker/Diff.Match.Patch

immutableに改変するのも大変つらそうだったのでmutableのままです。 どうしてこうなった…的なコードもたくさん出てきます。 実装に関してはそっ閉じすべき事案でしょう。

使い方は大体C#版と同じように使えるのではないでしょうか。

*1:実際に使いたかったPersimmon.Assertionでは.NET 2.0を最低ラインにしている