Как отметил Никита Волков в своем вопросе Data.Text vs String, я также задался вопросом, почему мне приходится иметь дело с различными реализациями строк type String = [Char] и Data.Text в Haskell. В моем коде я часто использую функции pack и unpack.
Мой вопрос: есть ли способ автоматического преобразования между обоими строковыми типами, чтобы я мог часто писать pack и unpack?
В других языках программирования, таких как Python или JavaScript, есть, например, автоматическое преобразование между целыми числами и поплавками, если это необходимо. Могу ли я достичь чего-то подобного в haskell? Я знаю, что указанные языки слабо типизированы, но я слышал, что С++ имеет аналогичную функцию.
Примечание. Я уже знаю расширение языка {-# LANGUAGE OverloadedStrings #-}. Но, как я понимаю, эти языковые расширения применяются только к строкам, определенным как "...". Я хочу иметь автоматическое преобразование для строк, которые я получил от других функций, или у меня есть аргументы в определениях функций.
Расширенный вопрос: Haskell. Текст или Bytestring охватывает также разницу между Data.Text и Data.ByteString. Есть ли способ автоматического преобразования между тремя строками String, Data.Text и Data.ByteString?