私はちょうどハスケルの学習を始めました。そして、その中にループとローカル変数があるようなハスケルのようなプログラムを書く方法を理解していません。どのようにそのようなプログラムがHaskellをどのように見えるかを誰もが示唆できますか?ローカル変数を含むので、2番目のサイクルを置き換える方法は? Haskellでコードを記述するハスケルループとローカル変数
#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でそれを行う方法を理解し、上の例を与えました。私はどのように実装しましたか?しかし、サイクルがないので、Haskellではです。再帰が必要ですか?
私の主な難しさは、私がハスケルのどのデザインを私の中のサイクル変数で置き換えることができるのか理解できないという事実にあります。私はインターネット上の情報を探していましたが、わかりやすいものは見つかりませんでした。
ハスケルの試行を表示できますか?あなたが試したことを理解すれば、人々はあなたをより良く助けることができます。 – Sibi
もちろん、コード – alex
Int a => [a] - > [a] 'は無効です。あなたが「Integral a =>」または「Ord a =>」を意味していたと思います。 – ThreeFx