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

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • max2sims2

    max2sims2

    19 Kasım 2008