我试图理解Haskell中的存在类型并遇到PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf
请更正我到目前为止的以下理解。
GADT
通过提供隐式forall
来提供清晰,更好的语法以使用现有类型进行编码>我的疑问
:: 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 :: Worker Int
[我正在尝试了解Haskell中的存在类型,并遇到了PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf。请更正我以下的理解...
[GADT通过提供隐式的forall提供了清晰,更好的语法来使用现有类型进行编码
在以上PDF的第20页中,对于以下代码,提到函数不可能要求特定的缓冲区。为什么会这样?