我试图通过输入两个值作为参数来递归创建列表,并返回列表。
我知道通过以下方式:
ENTRYPOINT
正常工作,但不是递归的。 通过输入单个参数使其按递归方式工作,如下所示:
function1 a b = [a..b]
但我真的不知道怎么做,它是用两个参数递归创建的。
答案 0 :(得分:4)
您检查a == b
是否代替模式匹配:
function a b = if a == b then [b]
else a : function (succ a) b
请注意,如果a
大于b
,则可能会导致问题。更好地检查一下。虽然我们正在努力,但请为您提供更好的名称:
range :: (Ord a, Enum a) => a -> a -> [a]
range a b
| a > b = []
| a == b = [b]
| otherwise = a : range (succ a) b