Другие ответы также верны, но я подумал, что было бы полезно взглянуть на то, как определяется list
.
Под капотом list
примерно выглядит следующим образом:
type 'a list =
| []
| ( :: ) of 'a * 'a list
Это подразумевает две вещи:
( :: )
всегда добавляет элемент к существующему списку.
- Элементы списка должны быть одного типа.
Так что, если у вас уже есть список [3; 4; 5]
, тогда x
должен быть int
для x :: [3; 4; 5]
для компиляции.