Dieser Artikel ist Lisp-ähnlich, aber vorerst ist Python Part 2 Adventskalender 2015 der Artikel des zweiten Tages.
Hy ist ein in Python implementierter Lisp-Interpreter.
Alle Programmierpfade führen zu Lisp. Beginnen wir also mit Hy als Schritt auf dem Weg.
Einfach mit pip
zu installieren.
pip install hy
Ich habe versucht, es zu starten.
% hy
hy 0.11.0 using CPython(default) 2.7.6 on Linux
=> (print "Hello, World")
Hello, World
Das erste, worüber Sie sich Sorgen machen müssen, ist, wie Sie das Python-Standardmodul und die Python-Standardbibliothek aufrufen, also werde ich es versuchen.
Holen Sie sich das Objekt datetime.datetime
.
=> (import datetime)
=> (datetime.datetime.now)
datetime.datetime(2015, 12, 2, 3, 25, 37, 20456)
Regulärer Ausdruck stimmt mit "re" überein.
=> (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',)
Senden Sie HTTP-Anfragen mit Anfragen
. Sie müssen "Pip-Installationsanforderungen" im Voraus ausführen.
=> (import requests)
=> (requests.get "https://ticketcamp.net/")
<Response [200]>
Wenn Sie mit der Lisp-Syntax vertraut sind, können Sie sie normal verwenden.
Verwenden Sie "defn".
=> (defn plus2 [x](+ 2 x))
=> (plus2 1)
3L
map, filter
Wird häufig in Lisp-Einführungsbüchern inc
, [odd?
](Http: //) verwendet. Für docs.hylang.org/en/latest/language/core.html#odd) sogar?
Es wurde vordefiniert. Verwenden Sie diese, um "Karte", "Filter" zu versuchen.
Zuallererst "Karte".
=> (map inc [1 2 3])
<itertools.imap object at 0x7fb7b0193f50>
=> (list (map inc [1 2 3]))
[2L, 3L, 4L]
Dann filtern
.
=> (filter odd? [1 2 3])
<itertools.ifilter object at 0x7fb7b13f59d0>
=> (list (filter odd? [1 2 3]))
[1L, 3L]
Das - >>
Makro schien zu funktionieren, daher werde ich den Prozess in Clojures Transducers Example ausprobieren.
=> (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
Ein Objekt, das Pythons dict
entspricht. (Wie nennt man das in Lisp?)
=> (def data {:spam 1 :egg 2 :ham 3})
=> (:spam data)
1L
Nachdem ich verschiedene Dinge ausprobiert hatte, hatte ich den Eindruck, dass ich es nicht mit dem gleichen Gefühl wie Clojure berühren sollte, das ich persönlich in letzter Zeit oft berühre. Obwohl alle Programmierungen zu Lisp führen, ist es schwer vorstellbar, etwas damit zu machen.
Das nächste Mal möchte ich überlegen, wie man Hy benutzt.
Recommended Posts