lines "\none\ntwo-6ren">
gpt4 book ai didi

haskell - 行和词的不一致行为

转载 作者:行者123 更新时间:2023-12-03 14:25:16 25 4
gpt4 key购买 nike

这是一个 GHCi session :

Prelude> words " one two three"
["one","two","three"]
Prelude> lines "\none\ntwo\nthree"
["","one","two","three"]

这种不一致是否有原因?而且,如果是这样,那是什么?

最佳答案

lines是一个实际的双射:您可以使用它来拆分 '\n' 处的任何字符串字符,然后用 unlines 完美地重新组合它们. (好吧,差不多:让我们忽略尾随换行符和 Windows 行结尾。)

words' ' 有相同的行为而不是 '\n'作为分隔符,它不会像我们想要的那样工作:例如,字符串

     "I will not buy this record\nit is scratched"

将被拆分为
     ["I","will","not","buy","this","record\nit","is","scratched"]

其中 words通过在任何空白处拆分来避免。
Prelude> words "I will not buy this record\nit is scratched"
["I","will","not","buy","this","record","it","is","scratched"]

这意味着 a) 无论如何它不是双射,因为空格的味道丢失了,而且 b) 当任何两个空格字符相邻时,你会得到很多“空词”。

因此, words 的明智行为就是将这样的空白压缩成一个空白。

关于haskell - 行和词的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39047943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com