【发布时间】:2013-06-03 19:06:23
【问题描述】:
我正在尝试使用两个值构造函数定义一个新的多态类型generic_list:List 和Seq,并添加函数map_function (proc, items) 将proc 映射到所有项目。
这是我目前所拥有的:
datatype 'a seq = Nil | Cons of 'a * (unit -> 'a seq);
datatype 'a generic_list = List of 'a list | Seq of 'a seq;
如何构建map_function
当我有以下要求时:
- 签名:
generic_map (proc, items) - 用途:与类中定义的
map相同,但项目可以是常规列表或惰性列表。 - 类型:
fn: ('a -> 'b) * 'a generic_list -> 'b generic_list -
例子:
generic_map (fn x => x + 10, List [1, 2, 3]); val it = List [12,13,14]: int generic_list generic_map (fn x => x + 10, Seq (Cons (1, fn () => Cons(2, fn () => Cons (3, fn () => Nil))))); val it = Seq (Cons (11, fn)): int generic_list
【问题讨论】:
-
我认为在你的第一个例子中,结果应该是
List [11, 12, 13]。