Wie übergebe ich Funktionen als Argumente an andere Funktionen in Julia ohne Leistungseinbußen?

8

BEARBEITEN zum Bearbeiten von @ user2864740 bearbeiten und kommentieren: Ich frage mich, ob es irgendwelche Informationen speziell für 0.4rc1 / rc2 oder insbesondere eine Strategie oder einen Vorschlag von einem der Julia-Entwickler mehr gibt jünger als die unten genannten (insbesondere @ StefanKarpinski Jan 2014 Antwort in # 6 unten). Thx

Siehe z. B.

  1. Ссылка
  2. Ссылка
  3. Ссылка
  4. Ссылка
  5. Kann ich Typinformationen hinzufügen zu Argumenten, die Funktionen in Julia sind?
  6. Leistung Strafe mit anonymer Funktion in Julia

(Als ziemlich unerfahrener Julia-Benutzer) ist meine beste Synthese dieser Informationen, von denen einige scheinbar veraltet sind, die beste Vorgehensweise, entweder "vermeide das" oder "verwende FastAnonymous.jl . "

Ich frage mich, was der neueste und beste Weg, um dies zu umgehen ist.

[Längere Version:]

Nehmen wir an, ich habe eine große Hierarchie von Funktionen. Ich würde gerne etwas wie

machen können %Vor%

Bitte nehmen Sie den Code nicht zu wörtlich. Dies ist ein enges Beispiel für eine allgemeinere Form der Transformation, die ich gerne machen würde, ungeachtet der tatsächlichen Besonderheiten der Transformation, ABER ich würde es gerne so machen, dass ich mir keine Sorgen machen muss (zu viel) über die Überprüfung der Leistung (das heißt, jenseits der normalen Sorgen, die ich in jedem Nicht-Funktion-mit-Funktion-als-Parameter-Fall anwenden würde) jedes Mal, wenn ich eine Funktion schreibe, die sich so verhält.

Zum Beispiel wäre in meiner idealen Welt die richtige Antwort "solange Sie jede Eingabefunktion mit @anon annotieren, bevor Sie diese Funktion mit diesen Funktionen als Argumente aufrufen, dann werden Sie genauso gut wie Sie können dies tun, ohne auf den konkreten Fall der konkreten Argumente eingehen zu müssen, die Sie übergeben. "

Wenn das stimmt, großartig - ich frage mich nur, ob das die richtige Interpretation ist, oder wenn nicht, könnte ich etwas zu diesem Thema lesen, das näher an einer "logisch" präsentierten Synthese liegt als die Sammlung von Links hier (die mehr ein Strom von kollektivem Bewusstsein oder Geschichte des Denkens zu diesem Thema sind).

    
Philip 22.09.2015, 20:32
quelle

1 Antwort

7

Die Antwort lautet immer noch "benutze FastAnonymous.jl" oder erstelle "Funktortypen" manuell (siehe NumericFuns.jl).

Wenn Sie julia 0.4 verwenden, funktioniert FastAnonymous.jl im Wesentlichen genauso, wie offizielle "schnelle Schließungen" in der Basisjulia funktionieren. Siehe Ссылка . (FastAnonymous ist auf julia 0.3 sehr anders implementiert und hat viele weitere Schwächen.)

    
tholy 23.09.2015, 07:54
quelle