2
タプルの最後の要素をタイプセーフな方法で任意の要素から削除することはできますか?
私はこのような何かをしたい:正しいタイプの最後の要素を持たないタプル
[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
タプルの最後の要素をタイプセーフな方法で任意の要素から削除することはできますか?
私はこのような何かをしたい:正しいタイプの最後の要素を持たないタプル
[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
いいえ、残念ながらそれは、タプル型がTuple
のインスタンスのリンクリストとして型システム内で表現されている理由が、型システムはできることはできません関数のシグネチャ内でループまたは再帰を表現します。 (そして、ループ/再帰を持つことで型システムは決して確定できなくなるでしょう)。
原則として、これを将来解決するには、組み込みプリミティブtype functionを使用して、タプル型。
"プリミティブ"型関数とは、言語自体では書き込めない型関数を意味しますが、代わりにコンパイラによって組み込み関数として提供されます。
セイロンには、現在のところ、この種のプリミティブ型関数はありませんが、このようにして解決できる他の同様の問題がいくつかあります。
質問は、私が理解しているように、最後の要素のタイプではなく、最後のすべてについてです。私はこれはあまり変わらないと思うけど。 –
@PaŭloEbermann確かに、基本的に同じ問題です。 –