在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

我的功能正常。非常感谢。