Questions tagged «type-systems»




4
为什么不依赖输入?
我已经看到一些消息来源回应了这样的观点:“ Haskell正在逐渐成为一种依赖类型的语言”。这似乎意味着,随着越来越多的语言扩展,Haskell朝着这个总体方向发展,但是还不存在。 我基本上想知道两件事。首先,很简单,“成为依赖类型的语言”实际上是什么意思?(希望不要太过专业。) 第二个问题是...缺点是什么?我的意思是,人们知道我们正朝着这个方向前进,因此必须有一定的优势。但是,我们还没有到那儿,因此必须存在一些不利因素,阻止人们一路前进。我觉得问题是复杂性急剧增加。但是,我不确定是否真正了解依存类型是什么。 我所知道的是,每当我开始阅读有关依赖类型的编程语言的内容时,文本都是完全难以理解的……大概就是问题所在。(?)

4
Scala中的#操作符是什么意思?
我在以下博客中看到此代码:Scala中的Type-Level Programming: // define the abstract types and bounds trait Recurse { type Next <: Recurse // this is the recursive function definition type X[R <: Recurse] <: Int } // implementation trait RecurseA extends Recurse { type Next = RecurseA // this is the implementation type X[R <: Recurse] …

4
依赖方法类型有哪些引人注目的用例?
依赖的方法类型以前曾经是实验性功能,现在默认情况下已在主干中启用,显然,这似乎在Scala社区中引起了一定的兴趣。 乍一看,这可能会产生什么效果尚不清楚。Heiko Seeberger在此处发布了一个简单的依赖方法类型的示例,从注释中可以看出,可以很容易地在方法上使用类型参数来复制它们。因此,这不是一个非常引人注目的例子。(我可能缺少明显的东西。如果是,请更正我。) 在依赖方法类型明显优于替代方法的情况下,有哪些实用且有用的用例示例? 我们可以对他们做哪些以前不可能/不容易做的有趣事情? 他们通过现有的类型系统功能向我们购买什么? 此外,从属方法类型是否类似于在其他高级键入语言(例如Haskell,OCaml)的类型系统中找到的任何功能或从中获得启发?


4
为什么不能使String成为类型类的实例?
鉴于: data Foo = FooString String … class Fooable a where --(is this a good way to name this?) toFoo :: a -> Foo 我想创建String一个实例Fooable: instance Fooable String where toFoo = FooString 然后,GHC抱怨: Illegal instance declaration for `Fooable String' (All instance types must be of the form (T t1 ... …

3
存在类型的理论基础是什么?
该哈斯克尔维基做了解释如何使用存在类型的一个很好的工作,但我不太神交背后的理论。 考虑以下存在类型的示例: data S = forall a. Show a => S a -- (1) 为我们可以转换为的东西定义类型包装String。维基提到我们真正想要定义的是类似 data S = S (exists a. Show a => a) -- (2) 即真正的“存在”类型-S大概我认为这是“数据构造函数接受Show实例存在的任何类型并将其包装”。实际上,您可能会编写如下的GADT: data S where -- (3) S :: Show a => a -> S 我没有尝试编译它,但是似乎它应该可以工作。对我来说,GADT显然等效于我们要编写的代码(2)。 但是,对我来说,为什么(1)等同于(2)并不清楚。为什么将数据构造函数移到外部会forall变成exists? 我能想到的最接近的是逻辑上的德摩根定律,在其中交换否定词和量词的顺序会将存在量词变成通用量词,反之亦然: ¬(∀x. px) ⇔ ∃x. ¬(px) 但是数据构造函数似乎与否定运算符完全不同。 …
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.