2016-05-15 11 views
3

Haskell d3.jsライブラリを使用して、棒グラフを棒グラフにしようとしています。Haskellの文字列を文字列に変換する

import Control.Monad 
import qualified Data.Text as T 
import D3JS 

test :: Int -> IO() 
test n = T.writeFile "generated.js" $ reify (box "#div1" (300,300) >>= bars n 300 (Data1D [100,20,80,60,120])) 

この簡単な例でも、私はいくつかの質問があります。

  • import qualifiedは名前空間が必要なようです。そして、私たちが書くことができる代わりにData.Text.writeFileT.writeFile
  • Data.Text.writeFileData.Texthackageのエントリに記載されて表示されませんが、私はpreludeに関連して、それを見つけました。ここで

シンプルT.writeFileエラーの例です:

> import qualified Data.Text.IO as T 
> T.writeFile "helloWorld.txt" "Hello World!" 

Couldn't match expected type ‘Text’ with actual type ‘String’ 

がうまくいけば、すべてこのタイプキャストのを整理することができます。それではreifyの仕組みについて大きな質問があります。今のところ...文字列をテキストに変更するにはどうしたらいいですか?

答えて

2

使用Data.Text.packは変換するStringTextへ:

pack :: String -> Text 

また、writeFileのテキストバージョンは、Data.Text.IOに表示されます。例えば:

import qualified Data.Text.IO as T 

T.writeFile "helloWorld.txt" (T.pack "Hello World!") 

それはTの両方Data.TextData.Text.IOをインポートするには大丈夫です。

2

述べた変換機能に加えて、あなたは文字列リテラルを記述できOverloadedStrings延長、カントー有効にするために、ファイルの先頭に{-# LANGUAGE OverloadedStrings #-}プラグマを使用する場合がありますが、自動的に互換性のある型に変換する(たとえばText )。

続きを読むhttps://ocharles.org.uk/blog/posts/2014-12-17-overloaded-strings.html

関連する問題