haskell - 如何在 Haskell 中执行递归主函数
问题描述
所以我想制作一个打印出 ASCII 三角形的程序。该程序会询问您希望三角形的高度并将其打印出来并一直执行,直到您输入的数字为7,然后它绘制高度为 7 的三角形,程序停止。如果数字是偶数,打印输出的三角形由“*”组成,如果数字是奇数,则由“#”组成。我想通过递归调用主函数来做到这一点
triangle level character = draw level character 1
where draw level character accumulator
| level <=0 = putStr("")
| level > 0 = do
putStrLn (replicate level ' ' ++ replicate accumulator character)
draw (level-1) character (accumulator+2)
main = do
number <- readLn :: IO Int
if(number `mod` 2 == 0)
then
triangle number'*'
main
else if (number == 7)
then triangle number '#'
else triangle number '#'
main
我得到的错误是
• Couldn't match expected type ‘IO () -> IO ()’
with actual type ‘IO ()’
• The function ‘triangle’ is applied to three arguments,
but its type ‘Int -> Char -> IO ()’ has only two
In the expression: triangle number '*' main
In a stmt of a 'do' block:
if (number `mod` 2 == 0) then
triangle number '*' main
else
if (number == 7) then
triangle number '#'
else
triangle number '#' main
解决方案
推荐阅读
- c - 使用 32 位无符号段对 1024 位数字进行有符号整数除法
- c# - 如何在 JSON 中将类与根节点分开
- python - Django:ModelFormSet.is_valid() 抛出 ValidationError:ManagementForm 数据丢失或已被篡改
- javascript - JavaScript 中的本地存储 - 如何确保所有数据都存储在本地存储中?
- c++ - 为什么#包括
默认情况下在 Windows 上不起作用? - reactjs - 在 UseEffect 返回后使用 useState 进行初始化:这可能吗?
- javascript - POST 表单数据失败并出现 405 错误:NGINX 反向代理使用 Javascript (XMLHttpRequest)
- android - 在 react native 中关闭 webview [invisble recaptcha v3]
- reactjs - `localeDetection` 的默认值
- php - WordPress。SQL 查询以获取 taxonomy.php 模板中的自定义 post_type 帖子计数