Ta'rif
|
Eslatma
|
(DEFUN map-comp (Fn al vl)
(COND (al
(CONS (FUNCALL fn (CAR al)
(map-comp (CDR al) (CDR
vl))
))) )
|
fn
mos keladigan al va vl elementlariga mos ravishda qo'llaniladi
al bo'sh bo'lgunga qadar
biz Fn natijasini
boshlardan biriktiramiz Al va VL
o'zgartirilgan
qolgan elementlar ro'yxatiga
|
(map-comp #'+ '(1 2 3) '(4 6 9))
|
= (5 8 12) miqdorlar
|
(map-comp #'* '(1 2 3) '(4 6 9))
|
= (4 12 27) Ishlar
|
(map-comp # ' CONS '(1 2 3) '(4 6 9))
|
= ((1 . 4) (2 . 6) (3 . 9)) juftliklar
|
(map-comp # ' EQ '(4 2 3) '(4 6 9))
|
= (T NIL NIL) taqqoslash
|
22-misol. Ro'yxatlar bilan ifodalangan vektorlar bo'yicha komponentli harakatlar
Ta'rif
|
Eslatma
|
(DEFUN mapf (fl el)
(COND (FL
(CONS (FUNCALL (CAR fl) el)
(mapf (CDR fl) el)
))))
|
fl bo'sh
keyingi natijani qo'shing
bo'lmaguncha, el dan keyingi funktsiyaning
natijasini qolgan funktsiyalar natijalari ro'yxatiga qo'shing
xususiyatlari
|
(mapf '(Length car CDR) '(a b c d))
|
= (4 a (b C d))
|
23-misol. Funktsiyalar ro'yxatini umumiy argumentga qo'llash
Bunday funktsional kompozitsiyalar bir qator funktsiyalarni umumiy argumentlar ro'yxatiga yoki ularning argumentlari ro'yxatlarining parallel ravishda berilgan ketma-ketligiga qo'llashi mumkin. Tabiiyki, ikkala seriya va ketma-ketliklar ro'yxatlar bilan ifodalanadi.
Bunday formulalar to'plamlar, grafikalar va metallingvistik formulalarni modellashtirishda qulaydir va ularni qayta ishlash nafaqat informatika fanida, balki keng ko'lamli muammolarni kamaytiradi.
Do'stlaringiz bilan baham: |