Ваш код не очень похож на код OCaml, поэтому трудно понять, как помочь: -)
В OCaml нет операции по изменению типа значения. Это не имело бы смысла на строго типизированном языке. Есть кое-что, что вы можете делать с типами, но "приведение" к ним не относится.
Итак, не существует допустимого выражения, которое выглядело бы как (int) expr
. Как указывает @glennsl, существует функция, которая возвращает длину списка. Если это то, что вы пытаетесь вычислить, вы можете использовать List.length _dimension
. Остальные вхождения (int)
можно просто удалить. Они недействительны для OCaml.
Ваше определение fn
нигде не использует тип game
, поэтому определение game
не требуется. Однако меня беспокоит то, что вы ожидаете, что определение окажет влияние.
Если вы не укажете все описания типов в своем определении fn
, компилятор выведет наиболее общий тип для вашей функции. Это означает, что вы можете вызвать его с любым списком, чтобы проверить его длину. Это было бы больше идиоматии c в OCaml. Т.е. не нужно указывать, что p1
- это список карточек. Функция подходит для любого списка.