Использование функции 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
с). То есть его тип является списком, и он должен иметь свойство, при котором его слияние с первым из подсписков должно приводить только к первому из подсписков. Есть только один список, который делает это.