代码之家  ›  专栏  ›  技术社区  ›  Bercovici Adrian

Haskell隐式转换

  •  2
  • Bercovici Adrian  · 技术社区  · 6 年前

    Data.Text.intercalate 来自 Hackage

    intercalate :: Text -> [Text] -> Text

    为什么? 那么,这样行吗

    T.intercalate "NI!" ["We", "seek", "the", "Holy", "Grail"]
    "WeNI!seekNI!theNI!HolyNI!Grail" 
    

    你不应该申请吗 Data.Text.pack
    资料来源: http://hackage.haskell.org/package/text-1.2.3.1/docs/Data-Text.html

    在我的情况下,我想包装以下物品:

    输入 : "{" mytext , "}" #mytext::Text
    我是这样做的:
    Prelude.intercalate (Data.Text.pack ",") [pack "{",mytext, pack "}"]

    (pack "{") ++ mytext++ pack "}")
    有人能告诉我为什么吗 Data.Text 公开的方法与 Data.List intercalate )它是如何在 Char Text ?

    1 回复  |  直到 6 年前
        1
  •  10
  •   willeM_ Van Onsem    6 年前

    你可能启用了 -XOverloadedStrings (或使用 {-# LANGUAGE OverloadedStrings #-} 在文件的顶部)。

    (不是字符串变量,只有文字),可以由任何 IsString 类型。

    Text IsString公司 类型。所以这意味着你隐含地使用 pack 绕着绳子 (同样是文字,而不是普通变量)。

    Num 类型。根据您对数字文本调用的函数,Haskell可以派生出确切的类型,从而相应地“解释”文本。例如,如果你写 atan2 1 2 ,那么 1 2 RealFloat 类型,而 quot 1 2 ,的 1 2 被解释为ntegral`类型。