Ich habe gerade angefangen zu lernen Haskell und ich verstehe nicht, wie man das Äquivalent eines solchen Programms in der Haskell schreiben, in dem es Schleifen und lokale Variablen gibt. Kann jemand vorschlagen, wie solch ein Programm auf Haskell aussehen würde? Wie ersetzt man den zweiten Zyklus, weil er die lokalen Variablen beinhaltet?Haskell Schleife und lokale Variable
#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;
}
Meine Versuche Code in Haskell zu schreiben:
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)
Jetzt muss ich durch die Liste nur laufen und das maximale Element zu finden und seinen Index zu speichern. Ich verstehe, wie man es in C und Java macht und gab das obige Beispiel, wie hätte ich es implementiert, aber in Haskell, weil es keine Zyklen gibt. Brauchen Rekursion?
Meine Hauptschwierigkeit liegt in der Tatsache, dass ich nicht verstehe, was Design in Haskell mich mit einer Zyklusvariablen innerhalb es ersetzen kann. Ich habe im Internet nach Informationen gesucht, konnte aber nichts für mich nachvollziehbar finden.
Können Sie Ihren Haskell-Versuch zeigen? Die Menschen werden Ihnen besser helfen können, wenn sie verstehen, was Sie versucht haben. – Sibi
Ja, natürlich bin ich jetzt Code hinzufügen – alex
'Int a => [a] -> [a]' ist ungültig. Entweder du meintest 'Integral a => 'oder' Ord a => 'denke ich. – ThreeFx