Ber*_*ian 3 haskell type-conversion
您好我正在寻找使用Data.Text.intercalate和从Hackage我不明白为什么如果该方法具有以下签名:
intercalate :: Text -> [Text] -> Text
为什么呢,这有用吗?
T.intercalate "NI!" ["We", "seek", "the", "Holy", "Grail"]
"WeNI!seekNI!theNI!HolyNI!Grail"
Run Code Online (Sandbox Code Playgroud)
你不应该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?
您可能已启用-XOverloadedStrings(或使用{-# LANGUAGE OverloadedStrings #-}文件顶部的启用它).
因此,这意味着字符串文字(不是字符串变量,只有文字)可以由任何IsString类型解释.
Text是一种IsString类型.所以这意味着你隐含地使用pack字符串文字(再次是文字,而不是普通的变量).
数字文字也会发生类似的事情:数字文字可以是任何Num类型.根据您在数字文字上调用的函数,Haskell可以导出确切的类型,从而相应地"解释"文字.例如,如果你写的atan2 1 2,然后1和2应该被解释为RealFloat类型,而对于quot 1 2中,1并且2被解释为Ìntegral`类型.
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |