我需要使用签名创建一个函数diffFolge :: (Integer, Integer) -> [Integer]
,当应用于参数pair (m, n)
(m, n> 0
)时,会返回一个降序的数字列表,即数字之间的差异n
.结果列表的第一个元素是m
,最后一个元素始终大于0
且最后一个元素或者0
严格小于的值0
.
我写的如下:
diffFolge :: (Integer,Integer) -> [Integer]
diffFolge (m,n) = if m > 0 && n > 0 then [m,m-n..n-2*n] else []
Run Code Online (Sandbox Code Playgroud)
例
input : diffFolge (5,1)
output : [5,4,3,2,1,0]
Run Code Online (Sandbox Code Playgroud)
例
input : diffFolge (5,2)
output :[5,3,1,-1] ---> This is true by my code
Run Code Online (Sandbox Code Playgroud)
但是,使用第一个示例中给出的输入,我的函数返回[5,4,3,2,1,0,-1]
.我怎么能纠正这个?