Можно ли удалить последний элемент из кортежа по типу для произвольной arity?
Я хочу что-то вроде этого:Кортеж без последнего элемента с правильным типом
[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
Можно ли удалить последний элемент из кортежа по типу для произвольной arity?
Я хочу что-то вроде этого:Кортеж без последнего элемента с правильным типом
[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
Нет, к сожалению, это не возможно, причина в том, что тип кортеж представлен в системе типа, как связанный список инстанциаций Tuple
, но система типа может» t выражает циклы или рекурсию в сигнатуре функции. (И наличие циклов/рекурсии почти наверняка сделало бы систему типов неразрешимой.)
Одним из путей решения этой проблемы в будущем может быть создание встроенного примитива type function, который оценивает последний тип элемента тип кортежа.
С помощью функции «примитивного типа» я имею в виду функцию типа, которая не может быть записана на самом языке, но вместо этого предоставляется как встроенный компилятором.
В настоящее время Цейлон не имеет подобных функций примитивного типа, но есть несколько других подобных проблем, которые могут быть решены таким образом.
Вопрос, как я понимаю, это не о типе последнего элемента, а о все-но-последнем. Хотя я думаю, что это не сильно изменилось. –
@ PaŭloEbermann Конечно, это в основном та же проблема. –