[PYTHON] Inspiriert von "Wie man reines funktionales JavaScript macht"

In dem Artikel "Wie man reines funktionales JavaScript macht"

Reinigen Sie Ihre Lieblingssprache Es kann eine rein funktionale Programmiersprache sein.

Dort war. Ich versuchte es.

C#


using System;
class Pure{

  public static
  Func<object,Func<object>>
  pure=a=>()=>a;

  public static
  Func<Func<object>,
  Func<Func<object,Func<object>>,
  Func<object>>>
  bind=m=>f=>()=>f(m())();

  public static
  Func<Func<object>,object>
  exec=m=>m();

  public static
  Func<Func<object,object>,
  Func<object,Func<object>>>
  wrap=f=>a=>()=>f(a);
}

class MainClass{
  static void Main(){

    Func<object,Func<object>>
    put=Pure.wrap(a=>
    {Console.WriteLine(
    ((string)a).ToUpper());
    return a;});

    Func<object,Func<object>>
    get=Pure.wrap(x=>
    Console.ReadLine());

    Func<object>
    main=Pure.bind(get(null))(put);
   
    Pure.exec(main);
  }
}

Java


import java.io.*;
import java.util.function.*;

class Pure{

  public static
  Function<Object,Supplier<Object>>
  pure=a->()->a;

  public static
  Function<Supplier<Object>,
  Function<Function<Object,
  Supplier<Object>>,
  Supplier<Object>>>
  bind=m->f->
  ()->f.apply(m.get()).get();

  public static
  Function<Supplier<Object>,Object>
  exec=m->m.get();

  public static
  Function<Function<Object,Object>,
  Function<Object,
  Supplier<Object>>>
  wrap=f->a->()->f.apply(a);
}

class Main{
  
  static BufferedReader in=new
  BufferedReader(new
  InputStreamReader(System.in));

  static Object _get(){
    Object s=null;
    try{
      s=in.readLine();
    }catch(Exception e){
      e.printStackTrace();
    }
    return s;
  }

  public static void 
  main(String[]args){
    
    Function<Object,
    Supplier<Object>>
    put=Pure.wrap.apply(a->
    {System.out.println(
    ((String)a).toUpperCase());
    return a;});

    Function<Object,
    Supplier<Object>>
    get=Pure.wrap.apply(x->_get());
     
    Supplier<Object>
    main=Pure.bind.apply(
    get.apply(null)).apply(put);
   
    Pure.exec.apply(main);
  }
}

Python3


#pure=a=>()=>a;
pure=lambda a:lambda:a

#bind=m=>f=>()=>f(m())();
bind=lambda m:lambda f:lambda:f(m())()

#exec=m=>m();
exec=lambda m:m()

#wrap=f=>a=>()=>f(a);
wrap=lambda f:lambda a:lambda:f(a)

put=wrap(lambda a:print(a.upper()))

get=wrap(lambda x:input())

main=bind(get(""))(put)

exec(main)

Recommended Posts

Inspiriert von "Wie man reines funktionales JavaScript macht"
[Fortsetzung] Inspiriert von "Wie man reines funktionales JavaScript erstellt"
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie Blender-Skripte mehrsprachig
Wie erstelle ich einen Crawler?
django + nginx So lassen Sie nur angemeldete Benutzer Bilder anzeigen
So machen Sie Word Cloud-Zeichen monochromatisch
Wie man Selen so leicht wie möglich macht
[Python] Wie man eine Klasse iterierbar macht
So machen Sie Multi-Boot-USB (Windows 10-kompatibel)
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
[Cocos2d-x] So erstellen Sie eine Skriptbindung (Teil 1)
Wie man ein Dialogsystem für Anfänger erstellt
[Python] So zeigen Sie die Elemente der Liste nebeneinander an
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (11)
So konvertieren Sie von iTunes erworbenes m4a in wav
So stellen Sie sicher, dass WTForms TextArea dem Löschen von Dateien entspricht
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (8)
So erstellen Sie ein Spigot-Plug-In (für Java-Anfänger)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (1)
So machen Sie mehrere Kernel auf Jupyter auswählbar
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (7)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (2)
[Django] So erhalten Sie Daten durch Angabe von SQL.
Wie man eine kratzige JSON-Ausgabe japanisch macht
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (3)
So löschen Sie die von Python ausgegebenen Zeichen
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (6)
So erstellen Sie das Substance Painter Python-Plugin (Einführung)
[Python] So sortieren Sie Instanzen nach Instanzvariablen
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (5)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (10)
Wie man Python für Anfänger schneller macht [numpy]
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (9)
So erkennt die AWS-Erkennung lokale Bilddateien
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Wie man ein Schießspiel mit toio macht (Teil 1)
So führen Sie einen Komponententest durch Teil 2 Klassendesign zum Testen
So erstellen Sie ein interaktives CLI-Tool mit Golang
So finden Sie heraus, welche Version von Java Maven verwendet wird
So erstellen Sie einen HTTPS-Server mit Go / Gin
So listen Sie Zahlen auf, indem Sie sie in n teilen
So speichern Sie eine von Python gekratzte Tabelle in CSV
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (12) (vollständig)
Wie man Decorator in Django benutzt und wie man es macht
So heben Sie den von pytest-django verwendeten DB-Namen auf
Umgang mit JSON in Ruby, Python, JavaScript, PHP