Aynı türdeki şeylerin bir listesini açıklayan bir tür belirtici tanımlamak istiyorum. Bu yüzden (array integer)
(dahili) benzeri (list-of integer)
olmasını istiyorum. Bunun gibi belirli bir türü için bunu oluşturmak mümkün duyuyorum:Common Lisp'te, genel bir veri türü belirteci nasıl tanımlanır (tamsayıların listesi gibi)?
(defun elements-are-integer (seq)
(every #'(lambda (x) (typep x 'integer)) seq))
(deftype list-of-integer()
'(and list (satisfies elements-are-integer)))
Ancak bu Yapılabilecek her türü için bunu yapmak zorunda anlamına gelir. Bu kodu nasıl değiştirebilirim ki, tür bir argüman olarak başka bir tür alır ve satisfies
yüklemini anında oluşturur mu? Sorun şu ki, satisfies
, global bir sembol gerektiriyor ve yüklemeyi doğru bağlamda nasıl tanımlayacağımı bilmiyorum (sanırım bir şekilde gensym
'a ihtiyacım var, ama nasıl?). Ayrıca çözüm, türün başka bir paketin içinde oluşturulabilmesi için çalışmalıdır.
teşekkür ederiz. Tam olarak istediğim gibi olmasa da kesinlikle yararlıdır. –