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/