2011-08-05 8 views
7

This guy uważa, że ​​dodanie fexprs do LISP dramatycznie upraszcza implementację języka w schemacie.Czy dodanie f-expr uprości implementację makr z podstawowych wyrażeń w LISP-ie?

Here we see w jaki sposób makra będą realizowane za pomocą LISPa MacCarthiego.

Moje pytanie brzmi - czy dodanie f-exprs upraszcza implementację makr w LISP-ie?

+2

Ważną rzeczą w seplenienie jest abstrakcja, a nie implementacja. Potrzeba uproszczenia implementacji jest w większości nieistotna przy potrzebie prostoty abstrakcji. Weź eval, możesz dopasować swoją definicję na tablicy, ale jedyną rzeczą, na której jej się przydaje, jest uczenie cię o jednym aspekcie obliczenia, mianowicie rekursywnie definiującym coś w sobie. Przydatność tej wiedzy jest znacznie mniejsza niż użyteczność tego, co umożliwia eval. –

Odpowiedz

12

Jestem tym facetem. :)

Feksprs, jak w języku Kernela, dramatycznie upraszczają język - Kernel ma tylko trzy wbudowanych: $ define! (dla dodania nowego wiązania do środowiska), $ if (zwykle) i $ vau (podobne do lambda, ale nie ocenia jego argumentów).

Ponadto makra (feksprs) mogą być używane jako funkcje - w przeciwieństwie do bieżących Lisps, gdzie makra działają oddzielnie od środowiska wykonawczego. Dzięki temu język jest bardziej ogólny.

To powiedziawszy, nie ma jeszcze żadnych aplikacji w świecie rzeczywistym napisanych w Kernelu lub innym nowym Lispie z feksprs. Jest to obszar aktywnego majsterkowania przez garstkę ludzi.

+0

Jestem zainteresowany, ponieważ zawsze uważałem, że rozróżnienie między makrami i funkcjami jest nieco zbyt arbitralne. Jak łatwo byłoby dodać te (eksperymentalnie) do Clojure? – mikera

+2

Prawdopodobnie bardzo trudne. Feksprs wymagają interpretacji, ponieważ nie ma jeszcze żadnych znanych środków do ich wydajnej kompilacji. [Ten post na blogu] (http://axisofeval.blogspot.com/2011/06/john-shutts-blog.html) zawiera wskaźniki do dyskusji na temat LtU, podczas których ludzie mówią o kwestiach związanych z wdrażaniem. –

+0

Czy mam rację, że to podejście jest odpowiednie tylko do interpretacji? –

Powiązane problemy