没有最后一个元素且类型正确的元组

Tuple without last element with correct type

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

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

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

原则上,我们将来可以解决此问题的一种方法是使用内置原语 type function 来评估元组类型的最后一个元素类型。

通过 "primitive" 类型函数,我的意思是不能用语言本身编写的类型函数,而是由编译器作为内置函数提供。

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