У меня проблема с моей программой, когда я вызываю терминал Ocaml «# matrix81 cache ;;» он дает мне ошибку: «Это выражение имеет список кеша типов, но здесь используется с списком кеша типа» Это мой код. Любая помощь?Ошибка: это выражение имеет список типов кеша, но здесь используется с списком кеша типа
let rec makeLine w =
let y = w - 1 in
if w <> 0 then 0::(makeLine y)
else []
;;
let rec makeMatrix w h =
let y = h - 1 in
if h <> 0 then (makeLine w)::(makeMatrix w y)
else []
;;
let rec checkCache lc d t =
match lc with
[] -> 0
|x::xs -> if (x.difficulty = d) && (x.terrain = t) then (checkCache xs d t) + 1
else (checkCache xs d t)
;;
let rec checkLine lc d t line =
match line with
[]->[]
|x::xs -> let nt = t +. 0.5 in
let v = 5.0 in
if (nt < v) then
let nx = (checkCache lc d t) in
(nx)::(checkLine lc d nt xs)
else []
;;
let rec matrix81Aux m d lc =
match m with
[] -> []
|x::xs -> let nd = d +. 0.5 in
let v = 5.0 in
if (nd < v) then
(checkLine lc d 1.0 x)::(matrix81Aux xs nd lc)
else []
;;
let matrix81 lc =
let m = makeMatrix 9 9 in
matrix81Aux m 1.0 lc
;;
Пожалуйста, не хулиганить свой пост. Обратите внимание, что после публикации вопроса или ответа на этот сайт эти должности становятся частью коллективных усилий других, которые также внесли свой вклад в этот контент. Сообщения, потенциально полезные для других, не должны удаляться, кроме чрезвычайных обстоятельств. Даже если сообщение больше не полезно первому автору, эта информация по-прежнему полезна для других, которые могут столкнуться с подобными проблемами в будущем - это основная философия Stack Exchange. – Matt