Cet article ressemble à Lisp, mais pour le moment, Python Part 2 Advent Calendar 2015 est l'article du deuxième jour.
Hy est un interpréteur Lisp implémenté en Python.
Tous les chemins de programmation mènent à Lisp, alors commençons par Hy comme étape le long du chemin.
Facile à installer avec «pip».
pip install hy
J'ai essayé de le démarrer.
% hy
hy 0.11.0 using CPython(default) 2.7.6 on Linux
=> (print "Hello, World")
Hello, World
La première chose à faire est de savoir comment appeler le module standard Python et la bibliothèque standard de Python, donc je vais l'essayer.
Obtenez l'objet datetime.datetime
.
=> (import datetime)
=> (datetime.datetime.now)
datetime.datetime(2015, 12, 2, 3, 25, 37, 20456)
Correspondance d'expression régulière avec «re».
=> (re.findall r"([a-zA-Z]+)" "Spam Egg Ham")
[u'Spam', u'Egg', u'Ham']
=> (.groups (re.match r"([a-zA-Z]+)" "Spam Egg Ham"))
(u'Spam',)
Envoyez des requêtes HTTP avec des «requêtes». Vous devez «pip installer les demandes» à l'avance.
=> (import requests)
=> (requests.get "https://ticketcamp.net/")
<Response [200]>
Si vous êtes familier avec la syntaxe Lisp, vous pouvez l'utiliser normalement.
Utilisez defn
.
=> (defn plus2 [x](+ 2 x))
=> (plus2 1)
3L
map, filter
Souvent utilisé dans les livres d'introduction Lisp [ʻinc](http://docs.hylang.org/en/latest/language/core.html#inc), [ʻodd?
](Http: // Pour docs.hylang.org/en/latest/language/core.html#odd), [ʻeven? ](Http://docs.hylang.org/en/latest/language/core.html#even) C'était prédéfini. Utilisez-les pour essayer
map,
filter`.
Tout d'abord, «map».
=> (map inc [1 2 3])
<itertools.imap object at 0x7fb7b0193f50>
=> (list (map inc [1 2 3]))
[2L, 3L, 4L]
Puis filtre
.
=> (filter odd? [1 2 3])
<itertools.ifilter object at 0x7fb7b13f59d0>
=> (list (filter odd? [1 2 3]))
[1L, 3L]
La macro - >>
semble fonctionner, donc je vais essayer le processus dans Exemple de transducteurs de Clojure.
=> (def coll [1 2 3])
=> (->> coll (filter odd?) (map inc) (take 1))
<itertools.islice object at 0x7fb7b0199cb0>
=> (list (->> coll (filter odd?) (map inc) (take 1)))
[2L]
dict
Un objet équivalent au dict
de Python. (Comment l'appelez-vous en Lisp?)
=> (def data {:spam 1 :egg 2 :ham 3})
=> (:spam data)
1L
Après avoir essayé diverses choses, j'ai eu l'impression que je ne devais pas le toucher avec le même sentiment que Clojure, que je touche personnellement souvent récemment. Cependant, même si toute programmation mène à Lisp, il est difficile d'imaginer faire quelque chose avec.
La prochaine fois, j'aimerais examiner comment utiliser Hy.
Recommended Posts