2010-11-07 35 views
5

Sadece Lisp'i öğrenmeye başladı ve ben aşağıdaki kod parçasını anlamak için görünmüyor:Ek, Common Lisp'te nasıl çalışır?

(setf y (loop for x in y 
       for z = (something) 
       unless (condition for z) 
       append z)) 

z eklenir? döngü sonlandırıldığında, isimsiz listesine eklenir

+2

Her yinelemedeki tüm z eklenir ve tek liste olarak döndürülür ... –

cevap

10

döndürülecek. İlk yaklaşım olarak,

(loop ... append z into result finally (return result)) 

burada append için bir kısaltma olarak düşünmek olabilecek bir döngü anahtar kelimedir; Aynı adı paylaşan haricinde append işleviyle ilgili --- yüzden yerine append fonksiyonun nasıl çalıştığını karar olduğunu loop makro var değil.

İlgili konular