嘿伙计们我需要为我的assigment声明inits和tails函数
到目前为止我得到了
inits [] = [[]]
inits (x:xs) = [x]: inits (xs)
字符串
这给了我一个输入inits [1,2]的输出[[1,2],[1],[],[]]好吧,这看起来更像是inits tails函数的失败版本,输出应该是[[1,2],[1],[]]
初始化的输出应该是输入[[],[1],[1,2]]
我不指望有人给我给予解决方案,我只是需要一些提示,我应该如何改变我的代码,我是新到haskell
3条答案
按热度按时间eh57zj3b1#
比较两个具体的例子:
字符串
你需要采取什么步骤把第二个结果变成第一个?
w1jd8yoj2#
在我编写inits函数的代码的过程中,tails函数的代码出来了:
字符串
13z8s7eq3#
作为显式递归的替代方案,编写
tails
的一种方法是使用scanr
,它的工作方式与foldr
非常相似,但将中间结果保存为列表。字符串
实现
inits
可以类似地使用scanl
实现:型