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を最低ラインにしている