【发布时间】:2013-06-13 19:19:36
【问题描述】:
我有一个关于 ML 中的映射列表的问题,这个问题似乎在重复,我已经定义了当前的数据类型:
datatype 'a seq = Nil | Cons of 'a * (unit -> 'a seq);
datatype 'a generic_list = List of 'a list
|Seq of 'a seq;
我现在正在尝试编写以下函数,它应该接收“'a generic_list”并返回一个“int generic_list:
val rec generic_map = fn (f,List(lst)) => if lst=nil then List([])
else List(f(List.hd(lst))::generic_map(f,List( List.drop(lst,1))));
该代码无法编译并出现以下错误:子句的右侧不同意函数结果类型 [tycon mismatch] 表达式:
'Z generic_list
result type: 'Z list
in declaration:
generic_map =
(fn (f,List lst) =>
if lst = nil
then List nil
else List
(f (List.hd lst) ::
generic_map (f,List (List.drop (lst,1)))))
我想知道这里有什么问题以及如何解决它以便编译,我找不到错误
【问题讨论】:
-
问题是为什么它当然不能编译,我不明白错误在哪里