0

関数型プログラミングについて読んでいるときに、高階関数の概念に出くわしました。これは、私が理解している限り、関数を引数として取り、関数を結果として返す関数です。

正規表現の世界でこれに相当するものはありますか? 別の正規表現を返すように正規表現で動作する正規表現?

単純な (しかし役に立たない) 例は次のようになります。

(\w)+(?=\(er\|re\))

と一致する

cent(er|re)

マッチを置き換える

calib

その結果、正規表現が得られます

calib(er|re)

これがどこかで使われているのを見た人はいますか?これが役立つ状況を誰でも思いつくことができますか?

4

1 に答える 1

2

私は個人的には考えたことがありませんし、頭の中で素晴らしいアプリケーションを思いつくこともできません。正規表現で覚えておくべき重要なことは、チューリング完全の考え方だと思います。関数型プログラミング言語はすべて完全にチューリングされているため、関数型プログラミングはコードを論理的に順序付けるもう 1 つの方法にすぎません。確かに、関数プログラミングのメリットと利点、およびスケーラビリティについては、多くの議論がなされています。

正規表現は、実際にはテキスト マッチング構文にすぎないため、関数型スタイルから実際のメリットを得ることはできません。これが、HTML が (可能であれば) 間違いなく簡単に記述できる正規表現よりも完全な言語パーサーを使用して解析される理由です。

于 2012-05-03T16:25:19.340 に答える