ukázka funkce block
(write-char #\Newline) (write (block nil (return) 1) ) ;=> NIL (write-char #\Newline) (write (block nil (return 1) 2) ) ;=> 1 (write-char #\Newline) (write (block nil (block alpha (return 1) 2)) ) ;=> 1 (write-char #\Newline) (write (block alpha (block nil (return 1)) 2) ) ;=> 2 (write-char #\Newline) (write (block nil (block nil (return 1) 2)) ) ;=> 1 (write-char #\Newline)
(block nil (return (values 1 2)) 3) ;=> 1, 2
(setq q (multiple-value-bind (v1 v2) (values 1 2) (vector v1 v2)))
Jak se pouzije "block" (tady s implicitnim return)
(defun JakSeDelaBlock() ;; tohle je bonus ;-) (if T (block (write pi) (write pi) (write pi) (write pi) (write pi)) (write pi) ) )
Příklad na chování seznamu a funkci CAR, CDR a CONS
CAR (Content of Address Register) - první prvek seznamu
CDR (Content of Decrement Register) - zbytek seznamu (bez prvního prvku)
CONS (Construction) - vytvoří seznam spojením CAR a CDR (tj. prvek připojí ke zbytku seznamu)
(car (1 2)) -> ERROR
(cons nil ('a)) -> ERROR
(write-char #\Newline) (write (car '(1 2))) (write-char #\Newline) (write (cdr '(a b c d))) (write-char #\Newline) (write (cdr '(a))) (write-char #\Newline) (write (cons 'a '(b c))) (write-char #\Newline) (write (cons 'a nil)) (write-char #\Newline) (write (cons 'a 'b)) (write-char #\Newline) (write (cons nil 'a)) (write-char #\Newline)
Do tohoto souboru můžete dopisovat svoje vlastní funkce
Funkce na generování náhodného seznamu celých čísel
Použití např.: (setq SEZ (ini 10))
(defun Ini (L) (loop for i from 1 to L collect (random 100)) )
Funkce member, jak ji zname z Prologu
(defun MyMember (x S) (cond ((EQUAL X (CAR S)) T) ((NULL S) NIL) (T (MyMember x (CDR S))) ) )
Další úkoly: