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]
Logo Hy – Câline la seiche | |
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] / 25 janvier 2021 ; il y a 15 mois ( 25 janvier 2021 ) |
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 |