2013-05-17 5 views
20

私の質問は、一方ではApplicativeとMonadタイプのクラス、もう一方はChomsky階層の文脈自由文法と文脈依存文法のレベルです。Chomsky階層のタイプクラスと文法レベルの対応

私は、タイプクラスと文法レベルの間には対応があると聞いています。この対応はどのくらい正確ですか?

つまり、すべての文脈自由文法は、Applicative combinatorsよりも強力なものを使用して解析することはできません。また、文脈自由なApplicative combinatorsより強力なものを使用して解析できる文法はすべてありますか?つまり、Applicative型クラスは文脈自由文法に完全に対応していますか?

「context-sensitive」と「Monad」によるApplicativeで置き換えられた「context-free」を除いて同じ質問。


バウンティ清澄:型クラス(ES)を行うには、レベルを文法に対応しますか?たとえば、 には、正規表現の言語に必要なすべての操作を提供する型クラスのセットがあります。

質問の動機は、私がパーサーに取り組んでいて、私が使用したコンビネータに基づいて、実装がどの文法レベルであったかを知りたいということです。これは可能ですか?

+4

あなたの前提は不完全だと思います。入力に基づいて制作物を逆戻りさせたり選択したりすることはできないので、「Applicative」だけでは、あなたを非常に遠くにさせることはありません。典型的なパーサーコンビネータAPIは、「代替」と「適用」に依存している。 –

+0

@ C.A.McCannはい、そうです。それを指摘してくれてありがとうございます。オルタナティブは正規の文法に対応していますか?私はそれを追加したかったが、 'Applicative'制約をどうしたらいいのか分からなかった。通常の文法に対応する他のタイプのクラスがありますか? –

+0

わかりません。私は、実際には、モナドの因果関係を表現する一般的な能力よりも深く関わっていると確信していません。この目的のためにパーサコンビネータを使用すると、表現力の弱い文法しか定義できなくなります。 –

答えて

4

誰もがこの正式にこれを示しているとは思わない。その理由は、申請者もモナドも、それ自体で何かの多くを解析することができないからです。むしろ、あなたも

  1. を必要とする選択肢(MonadPlusの、オルタナティブ)
  2. 再帰

(非決定性)の選択および(任意)再帰で、Applicativeのパーサは、本質的に正確にするためのインタフェースを一致させる、と述べていますBNF(そしてすべてのCFLを解析することができます)、モナドは任意の文脈依存操作を提供することができます。

関連する問題