2

是否可以以类型安全的方式从元组中删除最后一个元素以实现任意数量?
我想要这样的东西:

[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
4

1 回答 1

4

不,不幸的是这是不可能的,原因是元组类型在类型系统中表示为 的实例化的链表Tuple,但是类型系统不能在函数的签名中表达循环或递归。(并且具有循环/递归几乎肯定会使类型系统无法确定。)

原则上,我们可以在未来解决这个问题的一种方法是使用一个内置的原始类型函数来评估元组类型的最后一个元素类型。

“原始”类型函数是指不能用语言本身编写的类型函数,而是由编译器作为内置函数提供。

Ceylon 目前没有任何这些类型的原始类型函数,但还有一些其他类似的问题可以通过这种方式解决。

于 2016-09-18T17:22:33.113 回答