Оператор *
используется для объявления типа кортежа, но когда вы создаете кортеж, вы используете вместо него ,
. Итак, вы хотите restlist, startlist
.
Тогда вы обнаружите, что есть другая ошибка типа, потому что одна ветвь вашего match
выражения возвращает None
. Это тип параметра, поэтому возвращаемое значение должно быть Some
. Итак, вы хотите Some (restlist, startlist)
.
И теперь вы обнаружите еще одну ошибку типа, которая заключается в том, что вы объявили, что функция возвращает кортеж, но фактически она возвращает опцию кортежа (то есть, либо None
, либо Some tuple
). Таким образом, ваше объявление типа должно стать (List<'a> * List<'a>) option
.
Подробнее о том, почему *
используется при объявлении типов кортежей, а не ,
, https://fsharpforfunandprofit.com/posts/tuples/ - хорошее чтение.