相关疑难解决方法(0)

使用foldr实现take

这是我的take版本使用foldr:

myTake n list = foldr step [] list
                where step x y | (length y) < n = x : y
                               | otherwise = y

main = do print $ myTake 2 [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

输出不是我所期望的:

[3,4]
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过插入y自身的长度进行调试,结果是:

[3,2,1,0]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么长度按降序插入.也许我错过了一些明显的事

haskell fold take

7
推荐指数
3
解决办法
2436
查看次数

标签 统计

fold ×1

haskell ×1

take ×1