小编FAR*_*NIA的帖子

使用递归的 Haskell 循环

Haskell 和函数式编程是我不熟悉的东西,这学期我第一次见到 Haskell。当我尝试进行递归时,我得到了无限循环(不是很自豪)

这是代码

import Data.List
import System.IO

mrLoop :: Int -> Int -> IO()
mrLoop a b = do
    if b == 10 then return ()
    else
        print(a*b)
    mrLoop a (b+1)


main = do mrLoop 2 0
Run Code Online (Sandbox Code Playgroud)

所以我试着玩它,不知何故它起作用了

mrLoop :: Int -> Int -> IO()
mrLoop a 10 = return()
mrLoop a b = do
    print(a*b)
    mrLoop a (b+1)
Run Code Online (Sandbox Code Playgroud)

但是我的一个朋友说这不是 Haskell 的方式。那么我如何以 Haskell 的方式做到这一点呢?为什么第一个代码不起作用?

haskell

0
推荐指数
1
解决办法
72
查看次数

标签 统计

haskell ×1