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无法正常工作?代码有什么问题吗?

解决方法

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

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些