最近見かけたHaskell library: invert

invertは与えられた関数の逆関数を自動生成するライブラリ。もちろんどんな関数にも適用できるわけではないので使う際には注意が必要。対象の関数が単射(injective)か、全射(surjective)か、全単射(bijective)かによって異なる型シグネチャ逆関数を生成できる。

ドキュメントには"It does not contain a great quantity of code"とあるので、そこまで難しいことはしていないような感じ。そのかわりドキュメントは充実しているので関数の性質や逆関数の実装方法を学ぶのには役に立ちそう。テストにもある程度使えるのではないだろうか。