cirilisp/инит.ћ

94 lines
4.2 KiB
Plaintext
Raw Normal View History

(опиши (саар џ) (сар (сар џ)))
(опиши (садр џ) (сар (сдр џ)))
(опиши (сдар џ) (сдр (сар џ)))
(опиши (сддр џ) (сдр (сдр џ)))
(опиши (сааар џ) (сар (сар (сар џ))))
(опиши (саадр џ) (сар (сар (сдр џ))))
(опиши (садар џ) (сар (сдр (сар џ))))
(опиши (саддр џ) (сар (сдр (сдр џ))))
(опиши (сдаар џ) (сдр (сар (сар џ))))
(опиши (сдадр џ) (сдр (сар (сдр џ))))
(опиши (сддар џ) (сдр (сдр (сар џ))))
(опиши (сдддр џ) (сдр (сдр (сдр џ))))
(опиши нил ())
(опиши (једнаки? џ ж)
(ако (и (конс? џ) (конс? ж))
(и (једнаки? (сар џ) (сар ж)) (једнаки? (сдр џ) (сдр ж)))
(јед? џ ж)))
(опиши (новиред) (прикажи #\новиред))
(опиши (није предикат)
(ако предикат #л #и))
(опиши истинито #и) (опиши лажно #л)
(опиши (листа . арг) арг)
(опиши (дужина листа)
(опиши (дужина-пом листа акумулатор)
(ако (нил? листа)
акумулатор
(дужина-пом (сдр листа) (+ акумулатор 1))))
(ако (није (листа? листа))
(баци "Неправилан тип аргумента прослеђен функцији")
(дужина-пом листа 0)))
(опиши-складњу (и . предикати)
(ако (нил? предикати) #и
(ако (нил? (сдр предикати))
(сар предикати)
(листа 'ако (сар предикати)
(примени и (сдр предикати))
#л))))
(опиши-складњу (или . предикати)
(ако (нил? предикати) #л
(ако (нил? (сдр предикати))
(сар предикати)
(листа 'ако (листа 'није (сар предикати))
(примени или (сдр предикати))
(сар предикати)))))
(опиши-складњу (услов . клаузе)
(ако (= (дужина клаузе) 0)
(баци "Конс позван са празном листом клауза")
(ако (није (и (конс? (сар клаузе)) (листа? (сар клаузе))))
(баци "Неправилна конс клауза")
(листа 'ако (саар клаузе)
(ако (нил? (сдар клаузе))
(саар клаузе)
2019-02-21 21:41:46 +01:00
(конс 'почни (сдар клаузе)))
(ако (нил? (сдр клаузе))
()
(примени услов (сдр клаузе)))))))
2019-02-21 21:41:46 +01:00
(опиши (мапирај процедура листа)
(услов
((није (листа? листа)) (баци "Функција се не може мапирати\
на не-листу"))
((није (процедура? процедура)) (баци "Не може се мапирати\
не-функција"))
((нил? листа) ())
(#и (конс
(процедура (сар листа))
(мапирај процедура (сдр листа))))))
(опиши-складњу (нека листа-променљивих . тело)
(опиши (валидна-нека-листа-променљивих листа)
(опиши (дужине2 листа)
(= (дужина листа) 2))
(примени и (мапирај дужине2 листа)))
(ако (није (валидна-нека-листа-променљивих листа-променљивих))
(баци "Невалидна листа променљивих за \"нека\" процедуру")
(почни
(опиши имена (мапирај сар листа-променљивих))
(опиши вредности (мапирај садр листа-променљивих))
(опиши ламбда-израз (надовежи (листа 'ламбда имена) тело))
(конс ламбда-израз вредности))))
(опиши (цео-број? џ)
(= (именилац (нетачно->тачно џ)) 1))