Merak: Progn ne anlama geliyor?


21

Emacs belgelerine göre:

progn is a special form in `C source code'.

(progn BODY...)

Eval BODY forms sequentially and return value of last one.
  1. progn(Veya kaynağı) ne anlama geliyor ?
  2. Kullanımı: bu eşdeğerdir mı Clojure'ın ->makro?

Yanıtlar:


32
  1. prognCL benzeri Lisp lehçelerinden ödünç alınan özel bir formdur. Uygulamalarında çoklu progs, değerlendirilmiş ifadeler ve hangi ifade değerinin döndürüldüğünü belirten bir sayıdan oluşur. prog1örneğin, tüm ifadeleri değerlendirir ve birincinin değerini döndürür, prog2tüm ifadeleri değerlendirir ve ikincinin değerini döndürür, progntüm ifadeleri değerlendirir ve n'ci değeri veya son ifadenin değerini döndürür.

  2. prognEmacs'ta Lisp, dobirden fazla ifadeyi tek bir taneye paketlemek için kullanılan Clojure'lerin eşdeğeridir . ifÖrneğin Clojure'un şartlı için kullanmanız gerekir .


1
İyi cevap, oy verdim. Ancak, formalite uğruna: şartlı şartlar için gerçekten gerek yok , condüstü kapalı progn.
mbork

2
Uh, örtülü yok ki Clojure bahsediyordum prognonun içinde if.
wasamasa

2
Emacs ayrıca prog1ve prog2özel formlara sahiptir.
cjm

1
Bunun birçok kullanıcı konfigürasyonunda kullanıldığını gördüm. Bunları birbiri ardına değerlendirmek yerine, bu şekilde çoklu ifadeleri "bir araya getirme" performansında bir artış var mı progn?
elethan

Seni böyle düşündüren şeyin ne olduğundan emin değilim. prognC'ye benzeyen bir dilde
ayraçlı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.