-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