微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

解决方法

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

原文地址:https://www.jb51.cc/html/226149.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐