prefixes ls = zipWith take [1 .. length ls] (repeat ls)
Есть ли способ сделать это лучше? Интуитивно, мне кажется, что невозможно получить алгоритм ниже O (n²) в чисто функциональном языке, потому что либо обратное, либо добавление должно применяться n раз. Я даже не знаю, как это доказать.