在ensemble.mli文件中我有
type 'a t;;
val ajouter : 'a -> 'a t -> 'a t
在ensemble.ml文件中:
type 'a t='a list
let rec ajouter =function a -> function
[] ->[a]
|h::t -> if h=a then h::t else h::(ajouter a t)
编译后:
ocamlc ensemble.mli ensemble.ml
#load "ensemble.cmo"
Ensemble.ajouter 1 [];;
**Error: This expression has type 'a list but an expression
was expected of type int Ensemble.t**
我必须能够详细解释这个错误,但我不知道如何解决它。所以我真的需要你的帮助。
答案 0 :(得分:2)
您的类型t
是抽象的。因此,Ensemble模块外部的任何内容都不能具有该类型。因此,[]
没有您希望的'a Ensemble.t
类型。
通常的解决方案是从模块中导出名为(例如)empty
(或vide
)的值。