Haskell: списки и потоки

Я заметил, что потокиво многом похожи на списки, за исключением добавления с постоянным временем. Конечно, добавление постоянного времени к спискам не так уж сложно, и DListделает именно это.

В оставшейся части обсуждения давайте предположим, что либо списки имеют добавление с постоянным временем, либо нас это просто не интересует.

Я считаю, что списки Haskell должны быть просто реализованы как потоки. Чтобы этого не произошло, я предполагаю, что должно выполняться следующее:

  1. Есть случаи, когда списки лучше, чем потоки И
  2. Есть случаи, когда потоки лучше, чем списки.

Мой вопрос: каковы примеры двух вышеупомянутых случаев?

Примечание. Для целей этого вопроса, пожалуйста, игнорируйте легко исправимые упущения в конкретных реализациях, которые я обсуждал. Я ищу здесь больше основных структурных различий.

Дополнительная информация:

Я предполагаю, что часть того, к чему я здесь клоню, скажем, если мы напишем [1..1000000], сделает ли компилятор Haskell (скажем, GHC):

  1. Создайте список ИЛИ
  2. Создайте объект с двумя целыми числами: 1 и 1000000, который полностью описывает список.

Если это случай (1), зачем это делать, поскольку создание промежуточных списков кажется ненужным снижением производительности?

Или, если это случай (2), то зачем нужны потоки?

20
задан Chris Martin 23 December 2016 в 04:20
поделиться