我最近在看wikipedia page for dependent types,我在想; Perl 6实际上是否引入了依赖类型?我似乎无法找到一个声称可靠的消息来源。
对某些人来说这可能是显而易见的,但确实对我来说很明显。
答案 0 :(得分:12)
反对 Ven,在Perl 6回答SO问题之后的评论中“是否存在具有可约束类型的语言?”,写了"perl6 doesn't have dependant types"后来写了“依赖类型,可能不,......好吧,如果我们在#perl6的交换中得到可判定的where
s ...“。 (拉里沃尔的反应是"what's a few halting problems among friends"。顺便说一句,到目前为止,获得关于Perl 6所有事情的权威答案的最好方法是通过#perl6向TimToady提问。)
对于 'dependent-type' SO tag的摘要是“依赖类型是依赖于值的类型”。 Perl 6支持依赖于值的类型,所以就是这样。
For Awwaiid更改的编辑摘要,将Perl 6添加到Dependent Types上的Wikipedia页面上说“Perl 6 ...具有不可判定的依赖类型”。
维基百科页面以:
开头依赖类型是一种类型,其定义取决于值。 “整数对”是一种类型。 “第二个大于第一个的整数对”是依赖类型,因为它依赖于值。
这是在Perl 6中沿着这些行创建类型的一种方法:
subset LessMorePair of Pair where { $_.key < $_.value }
subset MoreLessPair of Pair where { $_.key > $_.value }
multi sub foo ( Pair) { " P" }
multi sub foo (LessMorePair) { "LMP" }
multi sub foo (MoreLessPair) { "MLP" }
for 1 => 1, 1 => 2, 2 => 1 { say foo $_ }
# P
# LMP
# MLP
这是否意味着Perl 6 subset
功能会生成依赖类型?也许这就是Awwaiid所想的。