-2
我在学习函数式编程Haskell。在Haskell中创建for循环
我有我需要从命令行读取整数值和最大值的要求,我需要确定整数值是否在[1 to max value]
的范围内。我需要确定是否有范围的值除以整数值。
例如:
program 5 20
然后我需要检查是否从[1, 2, ..., 20]
任何值整除5按排序顺序。
如何编写这样的函数?
我已经阅读了参数作为
main = do
args <- getArgs
let first_divisor = args !! 0
let upper_bound = args !! 1
let x = read first_divisor :: Integer
let y = read upper_bound :: Integer
--print args
--putStrLn first_divisor
--putStrLn second_divisor
--putStrLn upper_bound
isDivisible x y
我需要编写此isDivisible函数从1循环至y和如果REM(1/X 2/X .... Y/X),它打印成功或失败。
我想通了环路:
repeatNTimes 0 = return()
repeatNTimes n =
do
-- my stuff
repeatNTimes (n-1)
但是,这会从n个迭代0,我想重复1至20
我怎样才能做到这一点在Haskell使我可以检查我的奇数值?
是那个单子IO你使用你不需要循环?这应该是一个纯粹的功能。 – Carcigenicate
@Carcigenicate不,我用havenot monad? monad直接为我提供循环功能? – user5335302
您正在使用'do'和'return'。 Monad是为什么的?你明白Haskell里有什么'return'吗?它与其他语言**非常不同。 'return'是**不用于从函数返回值。 – Carcigenicate