94 lines
4.2 KiB
Plaintext
94 lines
4.2 KiB
Plaintext
(опиши (саар џ) (сар (сар џ)))
|
||
(опиши (садр џ) (сар (сдр џ)))
|
||
(опиши (сдар џ) (сдр (сар џ)))
|
||
(опиши (сддр џ) (сдр (сдр џ)))
|
||
(опиши (сааар џ) (сар (сар (сар џ))))
|
||
(опиши (саадр џ) (сар (сар (сдр џ))))
|
||
(опиши (садар џ) (сар (сдр (сар џ))))
|
||
(опиши (саддр џ) (сар (сдр (сдр џ))))
|
||
(опиши (сдаар џ) (сдр (сар (сар џ))))
|
||
(опиши (сдадр џ) (сдр (сар (сдр џ))))
|
||
(опиши (сддар џ) (сдр (сдр (сар џ))))
|
||
(опиши (сдддр џ) (сдр (сдр (сдр џ))))
|
||
|
||
(опиши нил ())
|
||
|
||
(опиши (једнаки? џ ж)
|
||
(ако (и (конс? џ) (конс? ж))
|
||
(и (једнаки? (сар џ) (сар ж)) (једнаки? (сдр џ) (сдр ж)))
|
||
(јед? џ ж)))
|
||
|
||
(опиши (новиред) (прикажи #\новиред))
|
||
|
||
(опиши (није предикат)
|
||
(ако предикат #л #и))
|
||
|
||
(опиши истинито #и) (опиши лажно #л)
|
||
|
||
(опиши (листа . арг) арг)
|
||
|
||
(опиши (дужина листа)
|
||
(опиши (дужина-пом листа акумулатор)
|
||
(ако (нил? листа)
|
||
акумулатор
|
||
(дужина-пом (сдр листа) (+ акумулатор 1))))
|
||
(ако (није (листа? листа))
|
||
(баци "Неправилан тип аргумента прослеђен функцији")
|
||
(дужина-пом листа 0)))
|
||
|
||
(опиши-складњу (и . предикати)
|
||
(ако (нил? предикати) #и
|
||
(ако (нил? (сдр предикати))
|
||
(сар предикати)
|
||
(листа 'ако (сар предикати)
|
||
(примени и (сдр предикати))
|
||
#л))))
|
||
|
||
(опиши-складњу (или . предикати)
|
||
(ако (нил? предикати) #л
|
||
(ако (нил? (сдр предикати))
|
||
(сар предикати)
|
||
(листа 'ако (листа 'није (сар предикати))
|
||
(примени или (сдр предикати))
|
||
(сар предикати)))))
|
||
|
||
(опиши-складњу (услов . клаузе)
|
||
(ако (= (дужина клаузе) 0)
|
||
(баци "Конс позван са празном листом клауза")
|
||
(ако (није (и (конс? (сар клаузе)) (листа? (сар клаузе))))
|
||
(баци "Неправилна конс клауза")
|
||
(листа 'ако (саар клаузе)
|
||
(ако (нил? (сдар клаузе))
|
||
(саар клаузе)
|
||
(конс 'почни (сдар клаузе)))
|
||
(ако (нил? (сдр клаузе))
|
||
()
|
||
(примени услов (сдр клаузе)))))))
|
||
|
||
(опиши (мапирај процедура листа)
|
||
(услов
|
||
((није (листа? листа)) (баци "Функција се не може мапирати\
|
||
на не-листу"))
|
||
((није (процедура? процедура)) (баци "Не може се мапирати\
|
||
не-функција"))
|
||
((нил? листа) ())
|
||
(#и (конс
|
||
(процедура (сар листа))
|
||
(мапирај процедура (сдр листа))))))
|
||
|
||
(опиши-складњу (нека листа-променљивих . тело)
|
||
(опиши (валидна-нека-листа-променљивих листа)
|
||
(опиши (дужине2 листа)
|
||
(= (дужина листа) 2))
|
||
(примени и (мапирај дужине2 листа)))
|
||
(ако (није (валидна-нека-листа-променљивих листа-променљивих))
|
||
(баци "Невалидна листа променљивих за \"нека\" процедуру")
|
||
(почни
|
||
(опиши имена (мапирај сар листа-променљивих))
|
||
(опиши вредности (мапирај садр листа-променљивих))
|
||
(опиши ламбда-израз (надовежи (листа 'ламбда имена) тело))
|
||
(конс ламбда-израз вредности))))
|
||
|
||
(опиши (цео-број? џ)
|
||
(= (именилац (нетачно->тачно џ)) 1))
|