【发布时间】:2017-02-14 18:01:38
【问题描述】:
鉴于这些声明,我无法理解 SML 中的流:
exception Bad of string;
fun from seed next = Cons(seed,fn () => from (next seed) next);
fun head (Nil) = raise Bad("got nil in head")
| head (Cons(a,b)) = a;
fun tail (Nil) = raise Bad("got nil in tail")
| tail(Cons(a,b)) = b();
fun take 0 stream = nil
| take n (Nil) = raise Bad("got nil in take")
|take n (Cons(h,t)) = h::(take (n-1) (t()));
我可以像这样创建一个自然流 [1.0,2.0,3.0...]:val nat = from 1.0 (fn x => x+1.0);
还有一个流:val one = from 1.0 (fn x => x);
但是我将如何从这两个流创建一个流?特别是合并两个流并输出一个流的函数。
类似:fun merge a b 其中 a 和 b 是流。即,如果我们在合并这两个之后执行take 5,它将得到 [1.0,1.0,2.0,1.0,3.0]
【问题讨论】:
标签: sml