Как проверить в f #, если набор пуст? - PullRequest
0 голосов
/ 20 октября 2018

Как я могу проверить, является ли набор пустым, я реализовал следующий код, если набор имеет пустой набор, тогда я должен получить значение true, иначе false, например: [1;2;[]] этот набор должен привести к истине, и если набор равен [1;2;3] это должно привести к ложному, потому что в этом нет пустого набора.Ниже приведен код, который дает мне ошибку:

let rec isEmpty S =
   match S with
  |[] -> true
  |_ -> false
  |e::rest -> ([]=e) || (isEmpty [] rest)

1 Ответ

0 голосов
/ 20 октября 2018

К сожалению, для вашего варианта использования F # немного более «строго типизирован», чем вы хотели бы здесь.

В F # значение типа [1;2;3] представляет собой список int, и список int не будет принимать значение, подобное [1;2;[]].

Возможно, вы могли бы попытаться определить новый (рекурсивный) тип данных для вашей проблемы.

...