Wie würde ich in Clojure alles auf einen konstanten Wert abbilden?

7

Zum Beispiel

%Vor%

Fügt 10 zu allem hinzu

Angenommen, ich möchte alles auf die Konstante 1 abbilden. Ich habe es versucht

%Vor%

Aber ich verstehe den Compilerfehler nicht.

    
deltanovember 05.02.2012, 23:24
quelle

3 Antworten

14
%Vor%

Funktioniert aus zwei Gründen nicht:

  • #(1) ist eine anonyme Null-Argument-Funktion und funktioniert daher nicht mit map (was eine Ein-Argument-Funktion erfordert, wenn sie mit einer Eingabesequenz verwendet wird).
  • Selbst wenn es die richtige Arity hätte, würde es nicht funktionieren, weil es versucht, die Konstante 1 als eine Funktion wie (1) aufzurufen - probiere (#(1)) zum Beispiel, wenn du diesen Fehler sehen willst.

Hier sind einige Alternativen, die funktionieren:

%Vor%

Ich denke, dass die Versionen oder für sollte bevorzugt werden - diese sind klarer und idiomatischer.

    
mikera 06.02.2012, 03:14
quelle
11

Die anonyme Funktion #(+ 10 %1) entspricht:

%Vor%

Während #(1) entspricht:

%Vor%

Und versuchen, 1 als Funktion ohne Argumente aufzurufen, funktioniert einfach nicht.

    
Alex Taggart 06.02.2012 01:37
quelle
9

Ich habe das von clojure.org bekommen indem ich die Worte "clojure constant function" google, da ich gerade erst anfange, clojure zu betrachten.

%Vor%

Prost

    
epsilonhalbe 05.02.2012 23:37
quelle

Tags und Links