Я на самом деле французский студент по информатике, и я следую курсу под названием «Расширенное программирование». Для цели курса мне нужно разработать игру в OCaml ... blablabla ... Но я столкнулся с проблемой, которую я не могу разобраться в одиночку.Тип ошибки OCaml
Как вы можете видеть ниже, я создал функцию l_exists (которую я считаю расширением List.exists с поведением, которое я ожидаю). Эта функция возвращает список элементов, которые согласуются с предикатом.
Проблема «meme_pos». У меня была ошибка типа, но я не понимаю, почему, поскольку тип objet также является типом позиции. Итак, если кто-то может показать мне, что случилось, и как этого избежать. Я буду очень доволен.
Кстати, извините за мой английский. Я сделал все возможное:/
type position = { i : int; j : int }
type objet =
| Robot of position
| Debris of position
let l_exists p li arg_s =
let rec aux l acc = match l with
|[] -> acc
|x::xs -> aux xs (if(p arg_s x) then x::acc else acc)
in aux li []
val l_exists : ('a -> 'b -> bool) -> 'b list -> 'a -> 'b list = <fun>
let meme_pos pos (objetl:objet list) =
let p_pos_egale (pos1:position) (pos2:position) =
if(pos1=pos2) then true else false
in l_exists p_pos_egale objetl pos
Error: This expression has type objet list but an expression was expected of type position list.
Type objet is not compatible with type position.
Expression : in l_exists p_pos_egale objetl pos
Благодарим вас так mutch! –