haskell – 为什么Data.Text.Lazy.replace和Data.Text.Lazy.append不起作用?

前端之家收集整理的这篇文章主要介绍了haskell – 为什么Data.Text.Lazy.replace和Data.Text.Lazy.append不起作用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在下面的代码中,有三种不同的方式(str1,str2和str3)使用Data.Text.Lazy.replace替换字符串.他们应该提供相同的输出.
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

然而,运行该程序的结果是:

Hello,Joyce.
Hello,<<name>>.
Hello,Joyce.

为什么str2无法正常工作?代码有什么问题吗?

解决方法

伙计们,感谢错误报告.我会调查一下,然后按照我的发现跟进.

猜你在找的HTML相关文章