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

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006
  • tsweeney79

    tsweeney79

    21 Ocak 2008