【发布时间】:2019-03-19 07:14:19
【问题描述】:
我是 Haskell 新手。我正在尝试编写一个接受参数的递归函数:
([(Bool, Bool, Bool)], Int, Int)
并返回一个三元组列表:
[[(Bool, Bool, Bool)]]
例如调用
recursFunction ([(True, False, False), (False, True, False)], 25, 25)
应该返回
[[(True, False, False)],[(False,True,False)]]
目前为止
recursFunction :: ([(Bool, Bool, Bool)], Int, Int) -> [[(Bool, Bool, Bool)]]
recursFunction ([], y, z) = [[]]
我被卡住了,我不确定如何继续或使用递归来实现此功能。
【问题讨论】:
-
为什么这个被包裹在一个额外的列表中?为什么
[[(Bool, Bool, Bool)]]而不仅仅是[(Bool, Bool, Bool)]? -
@WillemVanOnsem 因为我在一个列表中返回多个列表
-
但是你的元组只能包含 一个 列表,所以这里没有理由将它包装在另一个列表中:inner 列表将始终是一个单例列表(包含一个元素),因此您有一个类型可以提供 less 约束。
-
这个函数的目的是什么?您提供的示例仅返回作为参数传递的相同内容,因此我看不到递归在哪里以及两个整数参数如何影响函数。