Например, я хотел бы вернуть true со списком [1; 2; 3; 4], но не [1; 3; 4; 5].
Я пробовал это до сих пор. Я считаю, что это работает на основе моих тестовых случаев до сих пор ... но если у кого-то есть отзывы или советы, это было бы здорово. По сути, я не уверен, как реализовать это с помощью встроенной библиотеки списков, которая, как я знаю, работает более эффективно, чем жестко закодированные действия. Может ли это быть реализовано с помощью fold_left или fold_right?
let is_seq elt1 elt2 =
if elt2 - elt1 = 1 then true else false
let next_elem lst =
match lst with
| [] -> failwith "this should not happen"
| h :: t -> h
(**[is_sequential lst] returns true if the list is sequential and
false if it is not *)
let rec is_sequential lst =
match lst with
| [] -> true
| h :: [] -> true
| h :: t -> if is_seq h (next_elem t) then is_sequential t else false