Data.Text.Lazy.replace
を使用して文字列を置き換える3つの異なる方法(str1
、str2
、およびstr3
)があります。彼らは同じ出力を与えるべきです。なぜData.Text.Lazy.replaceとData.Text.Lazy.appendは機能しませんか?
Hello, Joyce.
Hello, <<name>>.
Hello, Joyce.
なぜSTR2が正しく動作しません:プログラムを実行しているの結果があるしかし
import Data.Text.Lazy as DTL
str1 :: String
str1 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack "<<name>>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
str2 :: String
str2 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack "<<" `DTL.append` DTL.pack "name"
`DTL.append` DTL.pack ">>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
str3 :: String
str3 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack $ "<<" ++ "name" ++ ">>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
main :: IO()
main = do putStrLn str1
putStrLn str2
putStrLn str3
?コードに何か問題はありますか?
str2では、キー値にDTL.packの後に$を使用できますか? – Ankur