У меня есть этот тип данных:
datatype 'a stream' = Susp of unit -> 'a stream
and 'a stream = Empty | Cons of 'a * 'a stream'
и я хочу написать функцию сглаживания, которая имеет тип ниже.
flatten: ’a stream’ stream’ -> ’a stream’
Функция flatten будет принимать поток потоков в качестве входных данных и сглаживать их, добавляя их.
Как мне это сделать? Любые идеи?
Спасибо.
Изменить: я знаю, как это сделать для списков. Это довольно просто: fun flatten [] = [] | flat (l::ls) = l @ flatten ls;
Помогите мне с потоками, пожалуйста, я не знаю, как сопоставить поток потоку с шаблоном.
fun flatten [] = [] | flat (l::ls) = l @ flatten ls;
Помогите мне с потоками, пожалуйста, я не знаю, как сопоставить поток потоку с шаблоном. - person Dave   schedule 25.02.2012fun flatten Empty = ... | flatten (Cons(x,xs)) = ...
. Вам также необходимо определитьappend
для потоков. Единственный оставшийся трюк — вставитьfn
в нужные места. - person Andreas Rossberg   schedule 25.02.2012