Was ist das äquivalent statement in der while-Schleife in Haskell?

Sehr neu Haskell, Frage ich mich, wie man 1) berechnen etwas, bis ein bestimmtes Kriterium erfüllt ist, und dann 2) return der berechnete Wert.

In den Sprachen, die ich kenne, verwenden Sie eine while-Schleife für die. Wie machst du es in Haskell?

  • Haskell verwendet Rekursion anstelle von Schleifen.
  • Ich glaube nicht, dass man sagen kann, dass für den Allgemeinen Fall, wie mapping, Faltung und Filterung sind auch an Stelle von loops. Abgesehen natürlich von noch mehr andere Funktionen und sogar Bibliotheken von Funktionen. Es hängt immer; ich würde sagen, auf der ersten Ebene des Werkzeug-lineup, es ist map, filter, fold und Rekursion.
  • Haskell ist map, filter und Falten sind alle implementiert, die als rekursive Funktionen,... Diese Funktionen fügen Sie einfach eine Schicht der Abstraktion auf der Oberseite der Rekursion, aber Sie finden immer die Rekursion an der Unterseite des ganzen.
  • Richtig, und ich leugne nicht, dass. Aber z.B. Lambda-Ausdrücke in C++ implementierte Klassen mit einem Funktionsaufruf-operator; doch würden Sie nicht die Beratung über die Verwendung von Klassen mit Funktionsaufruf-operator in denen ein lambda-Ausdruck (als Werkzeug) ist besser geeignet. Würden Sie sagen, dass Haskell-Karte et al sind weniger idiomatische und/oder ratsam, als "raw" Rekursion?
  • Nein. Sollten Sie verwenden map, filter, foldr etc. wo immer es angebracht ist, aber ich sage, dass am unteren Rand des es, Rekursion Regeln Sie alle.
  • Natürlich und wahr; und doch würde ich lieber aufzählen, Sie in einer Sequenz mit Rekursion bei der Angabe von alternativen zu Schleifen; sowohl für pädagogische und idiomacy Gründen (zum öffnen die Büchse der Pandora: an der Unterseite alle, Python-interpreters oft mit Zeigern). Na ja, ich weiß, dass es ist mehr eine Präferenz Sache 🙂
  • Eigentlich ist das nicht unbedingt wahr. Wenn Sie mit einem anderen (nicht-rekursive) Darstellung von Listen, schreiben Sie nicht-rekursive Implementierungen von map und foldr: haskellforall.com/2014/09/...

InformationsquelleAutor Myke | 2014-12-10
Schreibe einen Kommentar