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

  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • RickardRick

    RickardRick

    9 Mart 2007
  • TROPFEST

    TROPFEST

    27 Mart 2007