在 Haskell 中将字符串转换为文本

joh*_*ual 5 io haskell d3.js

我正在尝试使用 Haskell d3.js 库将条形图制作为条形图。

\n\n
 import Control.Monad\n import qualified Data.Text as T\n import D3JS\n\n test :: Int -> IO ()\n test n = T.writeFile "generated.js" $ reify (box "#div1" (300,300) >>= bars n 300 (Data1D [100,20,80,60,120]))\n
Run Code Online (Sandbox Code Playgroud)\n\n

即使有了这个简单的例子,我仍然有很多问题。

\n\n
    \n
  • import qualified似乎需要命名空间。然后Data.Text.writeFile我们可以写T.writeFile
  • \n
  • Data.Text.writeFile没有出现在hackage的条目中Data.Text,但我确实找到了它与prelude相关的内容。
  • \n
\n\n

这是一个简单错误的示例T.writeFile

\n\n
> import qualified Data.Text.IO as T\n> T.writeFile "helloWorld.txt" "Hello World!"\n\nCouldn\'t match expected type \xe2\x80\x98Text\xe2\x80\x99 with actual type \xe2\x80\x98String\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望所有这些类型转换都能得到解决。然后我对如何reify运作有一个很大的疑问。现在...我该如何将字符串更改为文本?

\n

Eri*_*ikR 3

用于Data.Text.pack将 a 转换StringText

pack :: String -> Text
Run Code Online (Sandbox Code Playgroud)

此外,文本版本writeFile出现在 中Data.Text.IO,例如:

import qualified Data.Text.IO as T

T.writeFile "helloWorld.txt" (T.pack "Hello World!")
Run Code Online (Sandbox Code Playgroud)

Data.Text将和Data.Text.IO都导入为 就可以了T