Как отметил Никита Волков в своем вопросе 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
?