Tag: 量词

Java \\ s中的正则expression式与\\ s +

请问,这些expression式有什么区别? x = x.replaceAll("\\s", ""); x = x.replaceAll("\\s+", "");

存在types的理论基础是什么?

Haskell维基解释如何使用存在types做了很好的工作,但是我不太理解它背后的理论。 考虑这个存在types的例子: data S = forall a. Show a => S a — (1) 为我们可以转换为String东西定义一个types包装器。 维基提到,我们真正想要定义的是类似的 data S = S (exists a. Show a => a) — (2) 即一个真正的“存在”types – 松散的我认为这是说“数据构造函数S采取任何types的Show实例存在和包装它”。 实际上,你可以写一个GADT,如下所示: data S where — (3) S :: Show a => a -> S 我没有尝试编译,但似乎它应该工作。 对我来说,GADT显然等同于我们想写的代码(2)。 然而,我完全不明白为什么(1)等同于(2)。 为什么把数据构造函数移到外面会把所有的东西变成exists ? 我能想到的最接近的是德摩根的逻辑规律 ,交换否定顺序和量词将存在量词转换为通用量词,反之亦然: ¬(∀x. px) ⇔ […]