[PYTHON] Inspiré par "Comment créer du JavaScript purement fonctionnel"

Dans l'article "Comment créer du JavaScript purement fonctionnel"

Purifiez votre langue préférée Il peut s'agir d'un langage de programmation purement fonctionnel.

Il y avait. Je l'ai essayé.

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

Inspiré par "Comment créer du JavaScript purement fonctionnel"
[Suite] Inspiré par "Comment créer du JavaScript purement fonctionnel"
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Comment faire une traduction japonais-anglais
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
[Blender] Comment rendre les scripts Blender multilingues
Comment créer un robot - Basic
django + nginx Comment faire en sorte que seuls les utilisateurs connectés voient les images
Comment rendre les caractères de Word Cloud monochromatiques
Comment rendre le sélénium aussi léger que possible
[Python] Comment rendre une classe itérable
Comment créer une clé USB à démarrage multiple (compatible Windows 10)
Comment créer un indicateur personnalisé Backtrader
Comment créer un plan de site Pelican
[Cocos2d-x] Comment créer une liaison de script (partie 1)
Comment créer un système de dialogue dédié aux débutants
[python] Comment afficher les éléments de la liste côte à côte
Comment créer un pilote de périphérique Linux intégré (11)
Comment convertir M4a acquis par iTunes en wav
Comment faire correspondre WTForms TextArea à la suppression de fichier
Comment créer un pilote de périphérique Linux intégré (8)
Comment créer un plug-in Spigot (pour les débutants Java)
Comment créer un pilote de périphérique Linux intégré (1)
Comment rendre plusieurs noyaux sélectionnables sur Jupyter
Comment créer un dictionnaire avec une structure hiérarchique.
Comment créer un pilote de périphérique Linux intégré (7)
Comment créer un pilote de périphérique Linux intégré (2)
[Django] Comment obtenir des données en spécifiant SQL.
Comment créer une sortie JSON Scintillante en japonais
Comment créer un pilote de périphérique Linux intégré (3)
Comment effacer les caractères générés par Python
Comment créer un pilote de périphérique Linux intégré (6)
Comment créer le plugin Python de Substance Painter (Introduction)
[Python] Comment trier les instances par variables d'instance
Comment créer un pilote de périphérique Linux intégré (5)
Comment créer un pilote de périphérique Linux intégré (10)
Comment rendre le Python des débutants plus rapide [numpy]
Comment créer un pilote de périphérique Linux intégré (9)
Comment faire pour qu'AWS rekognition reconnaisse les fichiers image locaux
Expliquez en détail comment créer un son avec python
Comment faire un jeu de tir avec toio (partie 1)
Comment faire un test unitaire Part.2 Conception de classe pour les tests
Comment créer un outil CLI interactif avec Golang
Comment savoir quelle version de Java Maven utilise
Comment créer un serveur HTTPS avec Go / Gin
Comment lister les nombres en les divisant en n
Comment enregistrer une table récupérée par python en csv
Bases de PyTorch (2) -Comment créer un réseau de neurones-
Comment créer un pilote de périphérique Linux intégré (12) (Terminé)
Comment utiliser Decorator dans Django et comment le créer
Comment supprimer le préfixe du nom de base de données utilisé par pytest-django
Comment gérer JSON en Ruby, Python, JavaScript, PHP