gpt4 book ai didi

Haskell理解流程

转载 作者:行者123 更新时间:2023-12-02 17:11:59 25 4
gpt4 key购买 nike

我是 Haskell 新手,我正在尝试编写一个字符串分割函数

delim = '|'
splitStr::[Char]->[[Char]]->[[Char]]
splitStr list y
| sL > 0 && sL < length(list) = splitStr (drop (sL+1) list) [subList]++y
| otherwise = [subList]++y
where
subList = takeWhile (\x -> x /= delim) list
sL = length(subList)

split s = splitStr s []

但是,上面的代码总是以相反的顺序返回字符串

Main> split "foo|bar|java|python"
["python","java","bar","foo"]

y++[subList]更改为[subList]++y仍然给出相同的结果。我知道也许有更好的方法可以做到这一点,但我想知道为什么会发生上述情况。

最佳答案

splitStr (drop (sL+1) list) [subList]++y

这被解析为(splitStr (drop (sL+1) list) [subList])++y。您想要的可能是 splitStr (drop (sL+1) list) ([subList]++y)

关于Haskell理解流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477164/

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