방금 하스켈을 배우기 시작했고 하스켈에 루프와 로컬 변수가있는 프로그램을 작성하는 방법을 이해하지 못했습니다. 누구나 그러한 프로그램이 하스켈을 어떻게 보일지 제안 할 수 있습니까? 로컬 변수가 포함되어 있기 때문에 두 번째 사이클을 교체하는 방법은 무엇입니까? 하스켈 코드를 작성하는하스켈 루프와 로컬 변수
#include <iostream>
using namespace std;
int main() {
int n;
int a [100];
cin >> n;
for (int i = 0; i < n; i ++) {
cin >> a[i];
}
int max = 0;
int index = -1;
for (int i = 0; i < n - 1; i ++) {
if (a[i+1] - a[i] > max) {
max = a[i+1] + a[i];
index = i;
}
}
cout << index << endl;
return 0;
}
내 시도 :
module MyProgram where
import Data.List
import Data.Ord
-- Getting a new modernized list
f :: Int a => [a] -> [a]
f x = zipWith (-) (tail x) (x)
지금 난 그냥 목록을 실행하고 최대의 요소를 찾아 색인을 저장해야합니다. C 및 Java에서 어떻게 수행하는지 이해하고 위에 예제를 제시했다. 어떻게 구현 했는가?하지만 사이클이 없으므로 하스켈에서 구현했다. 재귀가 필요합니까?
필자의 주요 어려움은 하스켈의 설계가 저를 주기적 변수로 대체 할 수 있다는 것을 이해하지 못한다는 사실에 있습니다. 나는 인터넷에 대한 정보를 찾고 있었지만 나에게 이해할만한 것을 찾을 수 없었다.
하스켈 시도를 보여줄 수 있습니까? 그들이 무엇을 시도했는지 이해하면 사람들은 당신을 더 잘 도울 수 있습니다. – Sibi
예, 물론, 코드 – alex
'Int a => [a] -> [a]'가 유효하지 않습니다. 여러분은'Integral a =>'또는'Ord a =>'라고 생각합니다. – ThreeFx