generic_list
2 つの値コンストラクター (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