Учитывая этих заявлений у меня возникают проблемы понимания потоков в 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]
очень аккуратный, плохо играйте с ним спасибо – user3831011