Ich bin neu bei Haskell (und funktionaler Programmierung im Allgemeinen) und habe mich gefragt, wie ich mit den Nachteile (:) Operator?
Zum Beispiel mit WinGHCi Ich erstelle eine neue Liste und greife auf das erste Element zu:
%Vor%Die Eingabeaufforderung gibt 1, den Wert des ersten Elements, cool zurück. Jetzt füge ich einen neuen Wert an die Vorderseite der Liste an und versuche, darauf zuzugreifen:
%Vor%Es sieht so aus, als ob die Listenelemente nicht neu indiziert werden. Ich habe versucht, einen negativen Index zum Arbeiten und andere solche Dinge zu bekommen, aber der Compiler schien nicht zu genehmigen. Die Tutorials, die ich lese, überspringen sie einfach und ich konnte nichts online finden. Wie bekomme ich den Wert "5" aus der Liste?
Danke für die Hilfe und tut mir leid, wenn das eine sehr grundlegende Frage ist.
Diese Idee steht im Mittelpunkt der funktionalen -Programmierung: Sie ändern (normalerweise) keine Daten an ihrem Platz. Sie fügen also kein Element zu einer Liste hinzu: Sie erstellen eine neue Liste, ohne die alte zu ändern.
Dies ermöglicht viele nette Dinge, die zum Beispiel geteilt werden, weil Sie niemals die alten Daten ändern und Sie können sich immer wieder darauf beziehen. Aber es belastet Sie auch, wenn Sie an andere Programmierparadigmen gewöhnt sind: Sie müssen Ihre Herangehensweise an Dinge ändern (und oft müssen Sie Ihre Datenstrukturen / Algorithmen ändern, weil sie sich auf die direkte Änderung einer Datenstruktur verlassen). .
Geben Sie in Ihrem Beispiel einfach einen neuen Namen für die Liste ein:
%Vor%Lassen Sie mich mit (+) sowie (:)
veranschaulichen %Vor%versus
%Vor%Bindungen, die mit "Let" gemacht werden, ändern sich nie, aber neue können gemacht werden. Wenn eine neue Bindung den gleichen Namen wie eine alte Bindung hat, dann wird die alte Bindung "shadowed" nicht mutiert.
Tags und Links haskell list functional-programming winghci