Я создаю функцию в F #, которая получает список списков и возвращает true, если все списки имеют одинаковую длину, за исключением случаев, когда эта длина равна 0.
Я хочу указать, чтозаписи во внутреннем списке могут быть универсального типа 'T
, поэтому я выбрал
let properTable (input : list list<'T>) : bool =
let lengths = set ([for i in 0..(input.Length-1) -> input.[i].Length])
not (lengths.Contains(0)) && lengths.Count = 1
При вставке этой функции в F # интерактив я получаю сообщение об ошибке:
stdin (148,35): ошибка FS0010: приложение неожиданного типа в шаблоне. Ожидаемый ')' или другой токен.
Если я заменю тип типом input
на int list list
, функция работает, но я бы хотел любой тип, а не просто int
.
Я могу заставить его работать только с одним списком, как в
let testSingleList (input : list<'T>) : bool =
input.Length > 0
Как выполнить аналогичную конструкцию, но для списка списков?