Во-первых, ваше выражение синтаксически недопустимо. Отсутствует ])
в конце.
OCaml выводит типы вещей, поэтому, когда у вас есть правильное выражение, вы можете задать верхний уровень для типа:
# let atable = (
"Student",
[
("Id", ["2";"4";"7";"9"]);
("Name", ["Jim";"Linnea";"Steve";"Hannah"]);
("Gender",["Male";"Female";"Male";"Female"]);
("Course",["Geography";"Economics";"Informatics";"Geography"
])]);;
val atable : string * (string * string list) list =
("Student",
[("Id", ["2"; "4"; "7"; "9"]);
("Name", ["Jim"; "Linnea"; "Steve"; "Hannah"]);
("Gender", ["Male"; "Female"; "Male"; "Female"]);
("Course", ["Geography"; "Economics"; "Informatics"; "Geography"])])
Так что тип действительно string * (string * string list) list
.
Если после исправления синтаксиса у вас все еще есть проблема, проблема должна быть в другом месте. Было бы полезно увидеть полный пример вместе с конкретной ошибкой, которую вы видите.