Hypo Wie der Titel schon sagt, habe ich es so oft gemacht, dass es eine Werbung ist.
Ich glaube nicht, dass Sie es überhaupt gewohnt sind, es zu hören, aber Hy ist ein ** Lisp-Dialekt, der auf einer Python-VM läuft **. Wenn Sie beispielsweise Squid Lisp: Hy in Python geschrieben lesen, können Sie die Atmosphäre verstehen. Sie können es als ** Clojure Python-Version ** für JVM verstehen. Oder besser gesagt, ** es sieht aus wie Clojure **, also kannst du die Syntax mit Markdown oder ReST für die verdammt kleine Sprache hervorheben.
Hy selbst kann mit einem dedizierten Interpreter ausgeführt werden, aber der Aufwand für die Syntaxanalyse ist nicht gut. Daher ist es gut, den angehängten Befehl "hyc" zu verwenden, nachdem er in eine ".pyc" -Datei konvertiert wurde (bytekompiliertes Python-Skript). Es ist auch möglich, es mit demselben angehängten Befehl "hy2py" in eine ".py" -Datei zu konvertieren, aber ** normalerweise kann es nicht so betrieben werden, wie es ist **. Daher kann es nur zu Debugging-Zwecken verwendet werden. Dies liegt daran, dass von Hy generierte Python-ASTs häufig Symbolnamen haben, die normalerweise in Python nicht verfügbar sind. (Zum Beispiel beginnt der von gensym
generierte Variablenname mit:
)
Das Obige ist nicht sehr gut, wenn Sie eine kleine Anwendung schreiben möchten, die Ihre täglichen Aufgaben mit Hy vereinfacht. Es ist eine Geschichte, dass du nur ein Makefile schreiben musst, sobald du "hyc" bist, aber es ist nicht so cool **. Für Pythonista ist es außerdem unangenehm, jeden Tag die .pyc-Datei zu sehen **.
Dann wurde ** Hy-Quellcode in einem ausführbaren Format zusammengestellt ** erstellt, sodass dieser Artikel erstellt wurde. ** Hauptthema **.
Bitte von PyPI.
$ sudo pip install hypo
$ hypo -o Ausgabename Quelldatei 1 Quelldatei 2..
Es wird so verwendet. Wenn die Option "-o" weggelassen wird, wird die Ausgabe "a" genannt. Der Einstiegspunkt der Anwendung ist übrigens hier die "Quelldatei 1". Beachten Sie, dass nur ".hy" -Dateien zur Eingabe akzeptiert werden. Die Ausgabe lautet zipapp. Es handelt sich um eine Archivdatei. Da sie jedoch zuvor die Ausführungsberechtigung erhalten hat, können Sie sie sich als Ausführungsbinärdatei vorstellen. nicht.
Versuchen Sie beispielsweise, eine Anwendung zu erstellen, die aus den folgenden zwei Dateien besteht.
main.hy
(import [iota [iota]])
(defmain [&rest args]
(print (iota 10)))
iota.hy
(defn iota [m &optional [n 0] [step 1]]
(if (>= n m)
None
(cons n (iota m (+ n step) step))))
Übrigens sind diese Codes in Python wie folgt.
main.py
from iota import iota
if __name__ == '__main__':
print(iota(10))
iota.py
def iota(m, n=0, step=1):
if n >= m:
return ()
return (n, ) + iota(m, n + step, step)
Normalerweise wird in Python keine Rekursion verwendet, aber funktionale Sprachen sind rekursiv. Da es sich jedoch nicht um eine ** Schwanzwiederholung ** handelt, werde ich ablehnen, dass es sich um einen Code handelt, der für Lisper nicht gut ist. Übrigens, wenn Sie die Schwanzwiederholung in Hy verwenden, [loop / recur
](http: // docs. hylang.org/en/latest/contrib/loop.html) Verwenden Sie das Makro.
Kommen wir also zum Hauptthema zurück. Führen Sie den folgenden Befehl vom Terminal aus. Dieses Mal werden wir es mit dem Namen "Beispiel" erstellen.
$ hypo -o example main.hy iota.hy
Dann wird eine Datei mit dem Namen "Beispiel" im aktuellen Verzeichnis erstellt. Versuchen Sie also, sie auszuführen.
$ ./example
(0L 1L 2L 3L 4L 5L 6L 7L 8L 9L)
Der Inhalt von main.hy
wird ausgeführt. Zu diesem Zeitpunkt wird die zu ".pyc" kompilierte Datei in der Ausführungsdatei aufgerufen, sodass sie etwas schneller ist als die Ausführung über den Hy-Interpreter. Darüber hinaus ist es ** Hy Spezifikationen **, dass die numerische Ausgabe nicht gut ist.
Im Vordergrund habe ich die Verwendung von ** Hy-Quellcode wird in einem ausführbaren Format zusammengestellt ** vorgestellt. Es ist nicht für sehr große Anwendungen geeignet, aber ich hoffe, Sie werden es verwenden. Es ist ein Paket, das ich in ein paar Stunden geschrieben habe, um die Zeit an Feiertagen zu verkürzen. Wenn Sie also Fehler oder Anfragen haben, führen Sie bitte Pull-Anfrage [Problem](https: // github.com/koji-kojiro/hylang-hypo/issues) Bitte werfen Sie es. Vielen Dank, dass Sie so weit gelesen haben.
Recommended Posts