Automatische Konvertierung zwischen String und Daten.Text in haskell

Als Nikita Volkov erwähnt in seiner Frage Daten.Text vs String auch fragte ich mich warum habe ich zum Umgang mit den verschiedenen String-Implementierungen type String = [Char] und Data.Text in haskell. In meinem code benutze ich die pack und unpack Funktionen wirklich oft.

Meine Frage: gibt es eine Möglichkeit, eine automatische Konvertierung zwischen den beiden string-Typen, so dass ich vermeiden, schreiben pack und unpack so oft?

In anderen Programmiersprachen wie Python oder JavaScript gibt es zum Beispiel eine automatische Konvertierung zwischen ganze zahlen und Gleitkommazahlen, wenn es erforderlich ist. Kann ich etwas erreichen, wie dies auch in haskell? Ich weiß, dass die erwähnten Sprachen sind schwach typisiert, aber ich habe gehört, dass C++ eine ähnliche Funktion.

Hinweis: ich weiß schon, die Sprache Erweiterung { -# LANGUAGE OverloadedStrings #- }. Aber so wie ich Sie verstehe diese Sprache Erweiterungen gilt nur für strings definiert als "...". Ich möchte eine automatische Umstellung für strings, die ich aus anderen Funktionen oder ich haben als Argumente in der Funktion Definitionen.

Erweiterte Frage: Haskell. Text-oder Bytestring deckt auch den Unterschied zwischen Data.Text und Data.ByteString. Gibt es eine Möglichkeit, eine automatische Umwandlung zwischen den drei Saiten String, Data.Text und Data.ByteString?

  • Es gibt keine solche Sache und nicht sein können, wenn Sie möchten, dass Typ-Inferenz.
  • AFAIK die Antwort ist Nein, Haskell nicht automatisch konvertieren zwischen verschiedenen Arten. Sie können die automatische Umwandlung nur für Literale, da string-Literale haben den Typ AsString a => a wie Zahl-Literale haben den Typ Num a => a, aber Sie nicht bekommen, die automatische Konvertierungen auf Laufzeit-Werte.
  • vielen Dank für Eure schnellen Antworten!
Schreibe einen Kommentar