Was bedeutet Apostroph in Haskell?

8

Manchmal habe ich einen Beispielcode mit folgendem Ausdruck gesehen:

%Vor%

oder was ist der Unterschied zwischen:

%Vor%

Danke

    
XIA Yang 28.04.2012, 11:51
quelle

4 Antworten

17

' ist einfach ein anderes Identifizierungszeichen wie jedes andere. foldl' ist eine vollständig separate Funktion von foldl ; es könnte genauso gut strictFold heißen. Es heißt, weil es eng mit foldl verwandt ist: es ist ein foldl , bei dem der Akkumulator bei jedem Schritt ausgewertet wird, so dass sich große Thunks nicht aufbauen. Zum Beispiel wird foldl (+) 0 den Stapel auf einer großen Liste überlaufen lassen, aber foldl' (+) 0 wird nicht.

Im Allgemeinen bedeutet das Suffix eines ' eines von drei Dingen: foo' ist entweder eine Helferdefinition, die zum Definieren von foo verwendet wird, eine modifizierte Version von foo (also state , state' und state'' könnten ein Anfangszustand und zwei aktualisierte Versionen sein) oder eine strikte Version von foo .

    
ehird 28.04.2012, 11:54
quelle
3

Nichts, zumindest nicht in diesem Zusammenhang, da ein Apostroph ein gültiges Identifizierungszeichen ist (siehe diese Antwort für weitere Details.)

In den Standardbibliotheken ist es eine Konvention, dass eine strikte Version bestimmter Funktionen von der Standardversion (faul) durch einen Apostroph wie foldl' (strict) und foldl (faul) unterschieden wird. Das hat nichts damit zu tun, dass der Apostroph etwas Besonderes ist, es ist nur eine Konvention.

    
huon 28.04.2012 11:58
quelle
2

In Haskell ist es nur ein anderes Zeichen, um die Bezeichner zu unterscheiden. Der Bezeichner heißt dann fold prime , wird aber üblicherweise genauso verwendet wie es in der Mathematik verwendet .

    
pmr 28.04.2012 11:56
quelle
0

Es gibt ein Hack-Modul (ich vergesse das), das eine Art Mitgliedschaftstest (oder irgendein anderes Prädikat) in etwas beinhaltet. Die Testfunktion heißt "ist":

%Vor%

und aus Gründen der Bequemlichkeit ist auch die boolsche Negation der Funktion vorgesehen:

%Vor%

Ich fand es lustig, als ich es das erste Mal sah. Apostroph ist nur ein anderes Zeichen in der Kennung.

    
none 01.05.2012 02:44
quelle

Tags und Links