c++ - 如何在 Haskell 中使用我的递归函数?

标签 c++ haskell recursion

lol :: IO int
lol = go -1 0 0 0
where go k m n p = case k of
        -1 -> do{
                q <- readLn ;
                go 0 0 0 q
            }
        p -> do{
                putStrLn $ show $ n
            }
        _ -> do{
                q <- readLn ;
                go (k+1) q (if q > m then n+q-m else n) p
                return()
            }

我(一个 haskell 初学者)正在做一些练习题。我写了一个递归函数,但我不知道如何在 main 中使用它。请帮我解决这个问题。这是我在 C++ 中的想法,我接受了它。

#include<iostream>
using namespace std;
int main(){
    long long int prev=0;
    long long int count,ans=0;
    cin >> count;
    long long int p;
    for(int i=0; i<count ;i++){
        cin >> p;
        if(p>prev){
            ans+=p-prev;
        }
        prev=p;
    }
    cout << ans << endl;
}

最佳答案

有几个语法错误:

  • 在将负数用作参数时在其周围添加括号
  • 为避免在模块 block 中开始一个新行,缩进where(以及所有后续行)
  • 将缺少的分号添加到 return () 之前的行

还有一个类型错误:你应该写成lol::IO ()。修复这些后,您可以编写 main = lol 来使用它(或者简单地将其命名为 main 而不是 lol)。不知道它是否做了它应该做的事情,但这似乎是你应该能够在你让它运行后进行测试的事情。

关于c++ - 如何在 Haskell 中使用我的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35354042/

相关文章:

javascript - 递归函数导致其他调用多次触发

c++ - 归并排序实现

c++ - 分析编译时间

c++ - 复制构造函数和内存分配

haskell - 难以通过 UTF8Builder 为 RIO.Logger 编写日志消息

haskell - H-15 遇到麻烦

asp.net - 使用linq获取网页中某种类型的Web控件列表

c++ - 将文件包含为字符串

c++ - 关于读取 UTF-8 编码文本时 Ifstream get() 方法行为的解释 (C++)

haskell - 使用 gtk2hs 从文本中获取行号