在Haskell中,Int-> Int-> [Int]的基本情况是什么?

时间:2018-06-20 21:57:50

标签: haskell

例如,您拥有

InttoIntList x y

其类型转换为

Int -> Int -> [Int] 

如何为两个列表类型(例如[Int]

)的两个输入建立基本案例

1 个答案:

答案 0 :(得分:1)

基本情况不取决于函数的类型。是的,类型经常会提示。例如,对于一个列表,一个基本案例通常是空列表[],但本身不是

此外,常见的误解是函数采用两个或多个参数。在Haskell中,每个函数都精确地 一个参数。但是,输出可能是再次带有参数的函数(此处就是这种情况)。

在解决了这两个问题之后,出现了InttoIntList基本情况是什么的问题。好吧,基本案例是不涉及递归的案例。如果我正确理解您的功能,则希望生成一个数字列表,该数字每次从第一个Int到第二个Int递增。

因此,基本情况可能是第一个Int大于第二个Int的情况。在这种情况下,我们可能希望返回一个空列表,所以:

intToIntList m n | m > n = []  -- base case

,则递归情况是m <= n时。在这种情况下,我们通常希望返回以m开头的列表,然后返回由intToIntList (m+1) n产生的列表,因此:

                 | otherwise = m : intToInt (m+1) n

这里(:) :: a -> [a] -> [a]是一个列表构造函数。它将创建一个列表,其中{<1>}是 head (第一个元素),而m tail (其余元素)。

或将其放在一起:

intToInt (m+1) n