SORU
15 Mayıs 2009, Cuma


Arasındaki fark``,``, `setq set setf` Common Lisp?

Arasındaki fark nedir "", "", "" Common Lisp? setf setq set

CEVAP
15 Mayıs 2009, Cuma


Aslında, Lisp, sözlü değişkenleri yalnızca dinamik olanlar vardı. Ve SETQ veya SETF SET işlevi vardı.

Şimdi ne olarak yazılır:

(setf (symbol-value '*foo*) 42)

olarak yazılmıştır:

(set (quote *foo*) 42)

sonunda SETQ (SET Alıntı) abbreviavated oldu:

(setq *foo* 42)

Sonra sözlü değişkenleri oldu, ve SETQ basit bir sarıcı artık etrafında kurulmuş çok onları çok ... ... tayini için kullanılır hale geldi.

Daha sonra, birisi veri yapıları, değerleri, l-değerleri diğer diller ayna atama genel bir yol olarak SETF (Alan) icat:

x.car := 42;

yazılı olacaktır

(setf (car x) 42)

Simetri ve genellik için, SETF da SETQ işlevselliğini sağlamıştır. Bu noktada SETQ Düşük seviyeli bir ilkel olduğunu söylüyor, ve üst düzey bir operasyon SETF doğru olurdu.

Sonra makrolar sembolü oldu. Sembol makrolar şeffaf çalışsınlar diye, SETQ "atanmış olmak gerçekten sembol bir makro etti:" değişken eğer SETF gibi davranmak zorunda kalacağını fark edildi

(defvar *hidden* (cons 42 42))
(define-symbol-macro foo (car *hidden*))

foo => 42

(setq foo 13)

foo => 13

*hidden* => (13 . 42)

Biz günümüze gelene kadar SET ve SETQ eski lehçeleri kalır körelmiş, ve muhtemelen Common Lisp nihai halefleri yazmıştım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • Justin Davis

    Justin Davis

    14 Ocak 2008