タグ付けされた質問 「gadt」

2
Haskellの存在型の明確化
私はHaskellの存在型を理解しようとしていて、PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdfに遭遇しました これまでの理解を訂正してください。 存在する型は、それらに含まれる型には関心がないようですが、パターンマッチングにより、TypeableまたはDataを使用しない限り、型がわからない型が存在すると言われています。 タイプを非表示にする場合(たとえば、異種リストの場合)、またはコンパイル時にタイプがわからない場合は、これらを使用します。 GADTは、暗黙forallの 私の疑問 上記のPDFの20ページでは、関数が特定のバッファーを要求することは不可能であることが以下のコードで言及されています。なぜそうなのですか?関数のドラフトをしているとき、どのデータを使用するのかわからない場合でも、使用するバッファーの種類を正確に把握しています。持つことの何が悪いのか:: Worker MemoryBuffer Int彼らが本当にBufferを抽象化したいのなら、Sum型data Buffer = MemoryBuffer | NetBuffer | RandomBufferを持ち、次のような型を持つことができます:: Worker Buffer Int data Worker x = forall b. Buffer b => Worker {buffer :: b, input :: x} data MemoryBuffer = MemoryBuffer memoryWorker = Worker MemoryBuffer (1 :: Int) memoryWorker :: …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.