В настоящее время я преподаю себе Haskell, и мне интересно, какие лучшие практики при работе со строками в Haskell.
Строковая реализация по умолчанию в Haskell представляет собой список Char. Это неэффективно для ввода-вывода файлов, в соответствии с Real World Haskell, поскольку каждый символ выделен отдельно (я предполагаю, что это означает, что строка в основном связанный список в Haskell, но я не уверен.)
Но если стандартная реализация строки неэффективна для файлового ввода/вывода, также ли она неэффективна для работы со строками в памяти? Почему или почему нет? C использует массив char для представления String, и я предположил, что это будет по умолчанию способ делать вещи на большинстве языков.
Как я вижу, реализация списка String будет занимать больше памяти, так как каждому персонажу потребуются дополнительные накладные расходы, а также больше времени для повторения, поскольку для последующего Char потребуется разыменование указателя. Но мне до сих пор нравилось играть с Haskell, поэтому я хочу поверить, что реализация по умолчанию эффективна.