Zvire-0.01.el

Z Wikiverzity

Demonstrační program Zvire-0.01.el, tj. verse 0.01. Poslední verze viz Zvire.el


; Zvire
; =====
; Copyleft Kychot 1997
;
; Verse 0.01 zalozena ciste na seznamech - neni moc dobre
;
; Pocitac hada zvire
; napr:
; Je to zvire chlupate?
; - ano
; Je to zvire domaci?
; - ne
; Tak je to tygr!

;  chlupate: ano:  ----------->   domaci: ano: ----> kocka
;             ne:  ---> ryba               ne: ----> tygr

; (car '(zaba zluva))
; (cdr '(zaba zluva))
; (cdr '(zluva))

(defvar zverinec nil "Vsechny zvirata, ktere si pamatuju.")
(defvar zvirata nil "Zvirata, ktera pripadaji v uvahu.")

(setq zverinec '(chlupate (domaci kocka tygr) ryba))

; (hadej-porad '(chlupate (domaci (kocka) (tygr)) (ryba)))
(defun hadej-porad (zvirata)
	"Rekurse: Podle seznamu 'zvirata' se porad pta na vlastnost
	a nakonec rekne zvire."
	(if (eq (length zvirata) 1)
			(odpovez zvirata)
		(hadej-porad (hadej-jednou zvirata))))

(defun hadej-jednou (zvirata)
	"Podle seznamu 'zvirata' se zapta na vlastnost
	a vrati podseznam."
	(let ((vlastnost-zvire (car zvirata))
		(takovi-onaci (cdr zvirata)))
			(if (zeptej-se vlastnost-zvire)
				(car takovi-onaci)
			    (cdr takovi-onaci))))

; (zeptej-se 'šedivé)
(defun zeptej-se (vlastnost)
	"Zepta se na vlastnost zvirete."
	(y-or-n-p (format "Je to zvire %s? " vlastnost)))

; (odpovez 'myš)
(defun odpovez (zvire)
	"Odpovi uhadnute zvire."
	(y-or-n-p (format "Je to %s! Ze mam pravdu? " zvire)))

(setq zvirata zverinec)
(setq zvirata (hadej-jednou zvirata))