Использование функции foldr в ML для объединения списков

Если у меня есть набор списков, таких как [[1,2,4], [3], [0,9,8]...], и предполагается, что подпрограмма 'слияние' предопределена, как мне объединить эти списки в один список с использованием функции Foldr?

Синтаксис для foldr: foldr f init [...]; Я запутался, каким должно быть начальное условие в этом случае.

Любая помощь будет оценена, спасибо.

1 ответ

С помощью foldr чтобы достичь этого, вы бы использовали foldr (fn (xs, result) => ...) initial xss где initial является одним из операндов для слияния (он работает как первый result в то время как результат слияния работает как последующий resultс). То есть его тип является списком, и он должен иметь свойство, при котором его слияние с первым из подсписков должно приводить только к первому из подсписков. Есть только один список, который делает это.

Другие вопросы по тегам