Warum muss ich in Haskell das Dollarzeichen in diesem Code verwenden?

7

Ich versuche immer noch, diesen Code zu knacken:

%Vor%

In problem_8 x = maximum . map product . groupsOf 5 $ x Warum kann es nicht einfach Gruppen von 5 x sein? ist es, weil x später zu einigen anderen Ausdrücken erweitert wird (hier wird es sein: digits = map digitToInt $concat $ lines t )? ist das die sogenannte faule (x wird jetzt nicht erweitert, aber vielleicht später)?

    
osager 25.11.2011, 23:20
quelle

3 Antworten

15

Ohne $ funktioniert der Vorrang folgendermaßen:

%Vor%

Da . (Funktionszusammensetzung) zwei Funktionen als Argumente und groupsOf 5 x keine Funktion zurückgeben kann, ist dies ein Fehler.

Mit dem $ funktioniert der Vorrang folgendermaßen:

%Vor%

Dies ist äquivalent (über Funktionszusammensetzung) zu:

%Vor%

oder:

%Vor%

(jedoch wird das Aneinanderreihen von $ als schlechter Stil angesehen)

Das hat nichts mit Faulheit zu tun, Notiz.

    
bdonlan 25.11.2011, 23:25
quelle
9

Sie müssen $ nicht verwenden, Sie müssen sie nicht verwenden.

In Ihrem Fall bietet sich die sinnlose Schreibweise an: Statt

%Vor%

entspricht:

%Vor%

Wir können die x auf beiden Seiten der Gleichung weglassen:

%Vor%     
Ingo 25.11.2011 23:54
quelle
5

Wie ein bdonlan sagte, ist $ eine Funktionsanwendung und . ist funktionale Zusammensetzung .

Verwenden Sie hoogle , um herauszufinden, was ein Keyword tut. Es könnte auch hilfreich sein, die Funktionssignatur und den Modulnamen anzuzeigen, woher es kommt.

    
quelle

Tags und Links