Lisp in Python

Gute Links und Tutorials könnt ihr hier posten.
Antworten
macco
User
Beiträge: 2
Registriert: Donnerstag 6. Mai 2010, 08:53

Ich habe ein interessantes Projekt gefunden: Hy (https://github.com/hylang/hy)

Hy ist ein Lisp, das zu Python umgewandelt wird. Man kann damit auf Python-Bibliotheken zurückgreifen und die Batterien nutzen. Ähnlich wie das bei Clojure der Fall ist.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Ich verstehe nicht wirklich was der großartige Vorteil davon sein soll. Bei Clojure auf der JVM kann man noch argumentieren, dass man so Java und seine Schwafeligkeit vermeidet, bei Python erschließt mir sich der Sinn daher überhaupt nicht.
crockett
User
Beiträge: 12
Registriert: Montag 29. Mai 2006, 21:36
Kontaktdaten:

Na ja, Lisp ist für funktionale Programmierung schon ein wenig eleganter als Python. Ich wollte immer schon mal Lisp für kleine Skripte verwenden, es gibt aber nur einen Bruchteil der Bibliotheken die es für Python gibt. Auf die kann man jetzt zugreifen.
BlackJack

@crockett: Eleganz liegt wohl im Auge des Betrachters. Ich mag die Python Syntax und Hy ist in erster Linie nur eine andere Syntax für Python-Programme. Denn die ganzen Sprachentscheidungen die sich im Zusammenspiel von Sprachmechanismen und Standardbibliothek widerspiegeln, bleiben ja die von Python.

Die Übernahme von Hy-Quelltext in LISP-Programmen oder Code aus anderen LISP-Programmen in Hy fällt flach, weil man das nicht ohne Änderungen machen kann.

Soweit ich das sehe sind Makros das interessante was Hy bietet, denn *die* gibt es in Python nicht.
lunar

@macco @crockett Hy ist kein Lisp. Bestenfalls ist es Python mit Lisp-Syntax. Wo immer Sprachkonzepte von Python und Lisp aufeinander treffen, entstehen recht hässliche idiomatische Brüche, so beispielsweise bei Schlüsselwortargumenten und "kwapply", die in Ermangelung von Symbolen als Typ eher bescheiden aussehen, oder bei Symbolnamen, die mehr schlecht als recht in Bezeichner übersetzt werden.

Gerade letzteres verspricht spaßig zu werden: Was macht Hy aus einem Modul, welches sowohl eine Funktion "foo-bar" als auch eine namens "foo_bar" definiert?

Hy ist als Demonstration des "ast"-Moduls interessanter denn als eigene Sprache. In einem produktiv genutzten Programm würde ich diese Sprache niemals einsetzen.

@webspider Hy ist einfach nur eine andere Syntax für Python, und mithin als Sprache eher belanglos. Clojure geht dagegen weit über Java hinaus, und ist eine vollkommen unabhängige Sprache mit eigenen, mitunter sehr interessanten Konzepten, die sowohl Python als auch Java einiges voraus hat.
crockett
User
Beiträge: 12
Registriert: Montag 29. Mai 2006, 21:36
Kontaktdaten:

Lohnt es sich für einen Anfänger nicht, sich ein wenig mit Hy zu beschäftigen?

Wollte eigentlich damit ein wenig Lisp üben. :(
BlackJack

@crockett: Wie lunar schon sagte ist das Python mit Lisp-Syntax. Du kannst also die Lisp-Syntax damit lernen, aber nicht idiomatisches Lisp. Und die Syntax ist ja nun eher sehr trivial bei Lisp. Wobei die Lisp-Syntax nicht mal komplett ist, denn Quoten per ``'`` funktioniert nicht. Stattdessen verwendet Hy ``[`` und ``]`` als Begrenzer für gequotete Listen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

crockett hat geschrieben:Wollte eigentlich damit ein wenig Lisp üben. :(
Wenn du Lisp üben willst, nutze doch ein Lisp. Da gibt es inzwischen viele gute Umgebungen mit viel Dokumentation und Hilfestellungen. Da musst du nicht Python in Lisp-Syntax programmieren sondern kannst Lisp in seiner natürlichen Umgebung nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten