Questions tagged «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如果他们真的想在抽象缓冲区他们能有一个求和型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 :: …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.