Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Haskell中使用递归函数? lol::IO int lol=go-100 其中k m n p=的情况k -1->do{ q do{ putStrLn$show$n } _->做{ q m然后n+q-m其他n)p 返回() } 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() } #包括 使用名称空间std; int main(){ long-long-int-prev=0; 长整型计数,ans=0; cin>>计数; 长整型p; 对于(inti=0;i>p; 如果(p>prev){ ans+=p-prev; } prev=p; } cout_C++_Haskell_Recursion - Fatal编程技术网

C++ 如何在Haskell中使用递归函数? lol::IO int lol=go-100 其中k m n p=的情况k -1->do{ q do{ putStrLn$show$n } _->做{ q m然后n+q-m其他n)p 返回() } 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() } #包括 使用名称空间std; int main(){ long-long-int-prev=0; 长整型计数,ans=0; cin>>计数; 长整型p; 对于(inti=0;i>p; 如果(p>prev){ ans+=p-prev; } prev=p; } cout

C++ 如何在Haskell中使用递归函数? lol::IO int lol=go-100 其中k m n p=的情况k -1->do{ q do{ putStrLn$show$n } _->做{ q m然后n+q-m其他n)p 返回() } 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() } #包括 使用名称空间std; int main(){ long-long-int-prev=0; 长整型计数,ans=0; cin>>计数; 长整型p; 对于(inti=0;i>p; 如果(p>prev){ ans+=p-prev; } prev=p; } cout,c++,haskell,recursion,C++,Haskell,Recursion,有几个语法错误: 将负数用作参数时,在其周围添加括号 为避免在模块块中重新开始一行,请稍微缩进其中的(以及所有后续行) 将缺少的分号添加到return() 还有一个类型错误:您应该编写lol::IO()。修复这些错误后,您可以编写main=lol来使用它(或者简单地将其命名为main,而不是lol)。不知道它是否执行了它应该执行的操作,但这似乎是一件您应该能够在它运行后进行测试的事情。有几个语法错误: 将负数用作参数时,在其周围添加括号 为避免在模块块中重新开始一行,请稍微缩进其中的(以及

有几个语法错误:

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

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

有几个语法错误:

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

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

这个怎么样。我只是直接从C翻译过来的++

modulemain其中
转到::Int->Int->Int->IO Int
上一节课
|i>0=do p prev
然后转到(i-1)p(acc+(p-上一个))
其他go(i-1)p acc
|否则=返回acc
main::IO()
main=do

count这个怎么样?我只是直接从C翻译过来的++

modulemain其中
转到::Int->Int->Int->IO Int
上一节课
|i>0=do p prev
然后转到(i-1)p(acc+(p-上一个))
其他go(i-1)p acc
|否则=返回acc
main::IO()
main=do

计算函数的用途?解释。在Haskell中,递归函数通常需要至少两个参数,其中有一组元素的开头和结尾。函数的用途是什么?解释。在Haskell中,递归函数通常需要至少两个参数,其中有一组元素的开头和结尾元素。您使用
fmap
的方式会堆积一堆“堆栈”。您应该将
ans
作为
go
的参数(并严格要求)。或者使用
StateT
或(效率较低的)一个
IORef
@dfeur,因为您要求:)我没有把
acc
严格要求,毕竟,我们追求的是清晰的听力,而不是性能。有了
BangPatterns
,这就像
go I prev!acc=…
一样简单。但我想你不会觉得自己是一个语言杂注。@dfeuer确切地说。:)你使用
fmap
的方式会堆积一堆“堆栈”。您应该将
ans
作为
go
的参数(并使其严格)。或者使用
StateT
或(效率较低)一个
IORef
@dfeuer,既然你问:)我并没有严格要求
acc
,毕竟,我们追求的是清晰的听觉,而不是性能。有了
BangPatterns
,这很简单,就像
go I prev!acc=…
。但我想你不会觉得自己是一个语言杂注。@dfeuer确切地说:)
#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;
}