Ich wollte so etwas wie Elixirs Pipe in Python machen

Beispiel für die Rohrbearbeitung

Kürzlich (meiner Meinung nach) das Thema Elixier. Es ist eine moderne funktionale Sprache, die nicht so robust ist wie Haskell. Elixier hat viele Reize, aber unter ihnen liegt die Pipe-Verarbeitung von Funktionen in mir. Ich mag es sehr.

So ein Typ

[1, [2], 3, [4, 5] |> List.flatten |> Enum.map(&(&1 * 2))

Sie können den Rückgabewert mit dem Operator |> an die Funktion auf der rechten Seite übergeben.

Ich habe Python verwendet und wünschte, ich könnte wie oben mehrere Funktionen erstellen.

Was wurde gemacht

Ich habe es so gemacht.

def hoge(a, b, c, d) :
  return a+b+c+d

pipe([1,2], 
  [
    pmap(lambda x: x*2),
    list,
    to(hoge, [3, 4]),
    print
  ]
)

Pipe / 2, bis / 2, pmap / 1 sind die, die ich gemacht habe. Jede Rolle ist pipe Das erste Argument ist der Anfangswert für die Pipe-Verarbeitung, und das zweite Argument ist die Liste der Funktionen. Die Implementierung ist

from functools import reduce
def pipe(elm, fn_list) :
    return reduce(lambda x, f: f(x), fn_list, elm)

to Eine Funktion höherer Ordnung, die eine selbst erstellte Funktion in eine für eine Pipe-Funktion geeignete Form umwandelt. Die Implementierung ist

def to(fn, outer_args=None) :
    def _to(inner_args) :
        args = outer_args+inner_args if not outer_args == None else inner_args
        return fn(*args)
    return _to

pmap Eingewickelte vorhandene Kartenfunktion für die Rohrleitungsfunktion Darüber hinaus werden vorerst aber auch Reduzieren und Filtern vorgenommen

Die Implementierung ist

def pmap(fn) :
    def _pmap(li) :
        return map(fn, li)
    return _pmap

Impressionen

Ich bin zufrieden, weil ich das tun konnte, was ich wollte, indem ich etwas ziemlich Einfaches tat. Der Schreibstil unterscheidet sich jedoch stark vom Standardschreibstil, sodass ich dachte, ich könnte ihn nur mit meinem eigenen Code verwenden.

Recommended Posts

Ich wollte so etwas wie Elixirs Pipe in Python machen
Ich möchte am Ende etwas mit Python machen
Ich möchte die Effizienz mit Python auch in einem experimentellen System verbessern. (3) Ich möchte mit Pandas so etwas wie Excel machen
Ich wollte ABC159 mit Python lösen
Führen Sie so etwas wie Redis-Transaktionen in Python aus
Ich wollte es so machen, als würde ich einen Testfall für AtCoder ausführen.
[Maschinelles Lernen] Ich habe versucht, so etwas wie Bilder weiterzugeben
Ich möchte Dunnetts Test in Python machen
Ich möchte Strings in Kotlin wie Python manipulieren!
Machen Sie so etwas wie einen Python-Interpreter mit Visual Studio Code
So etwas wie JS setTimeout in Python
Eine Alternative zu "Pause" in Python
So etwas wie tail -f in Python
Ich sah dieses Commit und dachte, ich wollte so etwas wie eine Rake-Version: Bump auch in Python
Eine Geschichte, die ich machen wollte, als ich eine Liste von Lernsitzungen mit Python bekam
Eine Geschichte, die Django mit einer Funktion wie before_action ausführen wollte, die in Schienen verwendet wird [Anfänger lernt Python mit einem Nachschlagewerk]
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
So machen Sie R chartr () in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich wollte ABC160 mit Python lösen
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Versuchen Sie etwas wie Python für-else in Ruby
Ich wollte ABC172 mit Python lösen
DQN mit TensorFlow implementiert (ich wollte ...)
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Es ist neuer, aber ich wollte die BMI-Berechnung mit Python ausprobieren.
Was soll ich verwenden, um Typvergleiche in Python durchzuführen?
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Ich wollte den NOMURA Contest 2020 mit Python lösen
[Python] Was ich getan habe, um Unit Test zu machen
Python: Ich konnte in Lambda rekursieren
Minimale Implementierung von Union Find in Python
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Geschrieben "Einführung in die Effektüberprüfung" in Python
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Was tun, um eine Google-Tabelle in Python zu erhalten?
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Was beim Nachahmen zu tun ist, wird in Python eingebettet
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich erhalte einen Importfehler mit Python Beautiful Soup
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Was tun, wenn der Druckbefehl selbst einen Fehler in Mayas Python verursacht?
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich möchte eine Datei mit Python zufällig testen
Ich habe versucht, Drakues Poker in Python zu implementieren
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit einem Roboter in Python arbeiten.
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren