1 haskell functional-programming
我编写了以下函数来查找输入数字的倍数。当我尝试给出负数时,输出只是正列表。如何修改我的代码以允许在输出中列出负数?
我的尝试:
multiples n = if n<0 then result1 else result2
where
result1 = [x | x <- [0..], x `mod` (-n) == 0]
result2 = [x | x <- [0..], x `mod` n == 0]
Input : take 5 $ multiples (-3)
Output: [0,3,6,9,12]
Expected Output: [0,-3,-6,-9,-12]
Run Code Online (Sandbox Code Playgroud)
如果您只是将参数乘以连续的自然数,则可以避免分支:
multiples n = map (* n) [0..]
Run Code Online (Sandbox Code Playgroud)
这适用于所有n,正面或负面。(如果您不介意无限的 0 列表,则为零。)