Hy
Hy est un dialecte du langage de programmation Lisp conçu pour interagir avec Python en traduisant les expressions s en arbre de syntaxe abstraite (AST) de Python. [3] [4] Hy a été présenté à la Python Conference (PyCon) 2013 par Paul Tagliamonte. [5] Lisp permet d’opérer sur le code en tant que données ( métaprogrammation ), ainsi Hy peut être utilisé pour écrire des langages spécifiques à un domaine . [6]
| Paradigme | Multi-paradigme : procédural , fonctionnel , orienté objet , méta , réflexif , générique |
|---|---|
| Famille | Zézayer |
| Conçu par | Paul Tagliamonte |
| Développeurs | Équipe de base |
| Première apparition | 2013 ; il y a 9 ans ( 2013 ) |
| Version stable | 0.20.0 [1] |
| Version d’aperçu | 1.0a4 [2] / 16 mars 2022 ; il y a 46 jours [2] ( 2022-03-16 ) |
| Portée | lexical, éventuellement dynamique [ citation nécessaire ] |
| Plateforme | IA-32 , x86-64 |
| SE | Multiplateforme |
| Licence | Style MIT |
| Extensions de nom de fichier | .hy |
| Site Internet | hylang .org |
| Influencé par | |
| Kawa , Clojure , Lisp commun |
Semblable aux mappages de Kawa et Clojure sur la machine virtuelle Java (JVM), [7] [8] Hy est censé fonctionner comme un frontal Lisp transparent pour Python. [9] Il permet aux bibliothèques Python , y compris la bibliothèque standard , d’être importées et accessibles avec le code Hy avec une étape de compilation [note 1] où les deux langages sont convertis en AST de Python. [remarque 2] [10] [11] [12]
Exemple de code
À partir de la documentation linguistique : [13]
=> ( imprimer “Hy !” ) Hy ! => ( defn salutationsnm [ nom ] ( print ( + “Hy ” name “!” ))) => ( salutationsnm “YourName” ) Hy YourName !
Voir également
- Lisp commun
- Clojure
- Kawa (Mise en œuvre du schéma)
- CLPython
Remarques
- ^ Le terme “compilé” peut s’appliquer à l’expression du code Hy dans l’AST de Python ou à la conversion de cet AST en bytecode, ce dernier dépendant de l’interpréteur Python spécifique utilisé et non de Hy.
- ^ Hy est testé sur Python 2.7, 3.4 à 3.6 et PyPy .
Références
- ^ “Version 0.20.0” . 25 janvier 2021 . Récupéré le 10 février 2021 .
- ^ un b “Hy 1.0a4” . GitHub.
- ^ Jaworski, Michał; Ziadé, Tarek (2019). Programmation experte en Python (troisième éd.). Birmingham, Royaume-Uni : Packt Publishing. p. 173. ISBN 978-1-78980-677-9. OCLC 1125343555 .
- ^ Danjou, Julien (2018). Serious Python : conseils de ceinture noire sur le déploiement, l’évolutivité, les tests, etc. San Francisco, Californie : Presse sans amidon. p. 145–149. ISBN 9781593278793. OCLC 1057729260 .
- ^ Tagliamonte, Paul (2 avril 2013). Discussion éclair PyCon (Discours). Conférence Python (PyCon). Sainte-Clara . Récupéré le 2 septembre 2014 .
- ^ Tagliamonte, Paul (11 avril 2014). Obtenir Hy sur Python : Comment implémenter une interface Lisp pour Python (Speech). PyCon . Montréal . Récupéré le 2 septembre 2014 .
- ^ Turto, Tuukka (14 février 2014). “La programmation peut être amusante avec Hy” . Open Source pour vous . Récupéré le 2 septembre 2014 .
- ^ Watson, Mark (2020). Un programmeur Lisp vivant en Python-Land: le langage de programmation Hy (PDF) . LeanBooks.
- ^ Bord, Jake (30 avril 2014). “Getting Hy sur Python” . LWN.net . Récupéré le 2 septembre 2014 .
- ^ “Hy Documentation” . hylang.org . Récupéré le 3 septembre 2014 .
- ^ Danjou, Julien (26 mars 2014). “L’AST” . Le guide du hacker sur Python . p. 165–172.
- ^ Kitchin, John (31 mars 2016). “Plus sur Hy et pourquoi je pense que c’est un gros problème” . Le groupe de recherche Kitchin . Université Carnegie-Mellon . Récupéré le 19 septembre 2018 .
- ^ “Démarrage rapide” . Hylang.org . 15 mai 2018 . Récupéré le 19 septembre 2018 .
Liens externes
- Site officiel
- hy sur GitHub
- Documentation
- Vidéo de la conférence PyCon 2014
| 1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LISP 1, 1.5, LISP 2 (abandonné) | |||||||||||||
| Maclisp | |||||||||||||
| Interlisp | |||||||||||||
| LMD | |||||||||||||
| Lisp Machine Lisp | |||||||||||||
| Schème | R5RS | R6RS | R7RS petit | ||||||||||
| NÉANT | |||||||||||||
| ZIL (Langage d’implémentation de Zork) | |||||||||||||
| Franz Lisp | |||||||||||||
| Lisp commun | |||||||||||||
| Le Lisp | |||||||||||||
| Programme MIT | |||||||||||||
| J | |||||||||||||
| Chez Scheme | |||||||||||||
| Emacs LispComment | |||||||||||||
| AutoLISP | |||||||||||||
| PicoLisp | |||||||||||||
| EuLisp | |||||||||||||
| ILISISP | |||||||||||||
| OpenLisp | |||||||||||||
| Régime PLT | Raquette | ||||||||||||
| Ruse GNU | |||||||||||||
| LISP visuel | |||||||||||||
| Clojure | |||||||||||||
| Arc | |||||||||||||
| LFE | |||||||||||||
| Hy |