gpt4 book ai didi

Haskell 反向函数

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

对 Haskell 非常陌生,并试图创建我自己的反向函数。在这里写了这个,但它总是返回一个空列表 [] :

reverse' :: [a] -> [a]
reverse' xs = [xs !! k | k <- [((length xs) - 1)..0]]

谁能解释我做错了什么?

谢谢

最佳答案

groovy提到,Haskell 范围大多是增量的——也就是说,除非你给它一些提示,否则它不知道如何构造一个递减列表。看看下面的 ghci session :

Prelude> [5..0]
[]
Prelude> [5,4..0]
[5,4,3,2,1,0]

所以,你可以构造这样的东西:
foo xs = [(length xs-1), (length xs -2)..0]
rev xs = [xs !! k| k <- foo xs]

在 ghci 中检查如下:
Prelude> rev [1..5]
[5,4,3,2,1]

看看 Unexpected result while reversing a listHow can I write reverse by foldr efficiently in Haskell?有关反转列表的其他想法。

关于Haskell 反向函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893710/

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