在haskell中递归返回两个值的列表值

时间:2017-02-21 08:28:44

标签: haskell functional-programming

我试图通过输入两个值作为参数来递归创建列表,并返回列表。

我知道通过以下方式:

ENTRYPOINT

正常工作,但不是递归的。 通过输入单个参数使其按递归方式工作,如下所示:

function1 a b = [a..b]

但我真的不知道怎么做,它是用两个参数递归创建的。

1 个答案:

答案 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
相关问题