在haskell中从两个值递归返回列表值
我试图通过输入两个值作为参数递归地创建一个列表,这将返回列表 我知道通过做以下事情:在haskell中从两个值递归返回列表值,haskell,functional-programming,Haskell,Functional Programming,我试图通过输入两个值作为参数递归地创建一个列表,这将返回列表 我知道通过做以下事情: function1 a b = [a..b] 工作正常,但不是递归的。 通过输入单个参数使其递归工作,如下所示: function 0 = [] function a = function4 (a-1) ++ [a] 但是我真的不知道如何做,它是用两个参数递归创建的。您检查a==b而不是模式匹配: function a b = if a == b then [b]
function1 a b = [a..b]
工作正常,但不是递归的。
通过输入单个参数使其递归工作,如下所示:
function 0 = []
function a = function4 (a-1) ++ [a]
但是我真的不知道如何做,它是用两个参数递归创建的。您检查
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
我的功能正常。非常感谢。