140 likes | 365 Views
Funkcie II. (defun vzdialenost (x y) (sqrt (+ (* x x) (* y y)))) (defun blizsi-bod1 (x1 y1 x2 y2) (if (< (vzdialenost x1 y1) (vzdialenost x2 y2)) :prvy :druhy)). Funkcie II. (defun blizsi-bod2 (x1 y1 x2 y2) (let ((vzdialenost (lambda (x y)
E N D
Funkcie II • (defun vzdialenost (x y) (sqrt (+ (* x x) (* y y)))) • (defun blizsi-bod1 (x1 y1 x2 y2) (if (< (vzdialenost x1 y1) (vzdialenost x2 y2)) :prvy :druhy))
Funkcie II • (defun blizsi-bod2 (x1 y1 x2 y2) (let ((vzdialenost (lambda (x y) (sqrt (+ (* x x) (* y y)))))) (if (< (funcall vzdialenost x1 y1) (funcall vzdialenost x2 y2)) :prvy :druhy)))
Funkcie II • (defun blizsi-bod2b (x1 y1 x2 y2) (let ((vzdialenost)) (setf (symbol-function vzdialenost) (lambda (x y) (sqrt (+ (* x x) (* y y))))) (if (< (vzdialenost x1 y1) (vzdialenost x2 y2)) :prvy :druhy)))
Funkcie II • (defun blizsi-bod3 (x1 y1 x2 y2) (flet ((vzdialenost (x y) (sqrt (+ (* x x) (* y y))))) (if (< (vzdialenost x1 y1) (vzdialenost x2 y2)) :prvy :druhy)))
Funkcie II • (defun sucet-aux (accum scitance) (if (null scitance) accum (sucet-aux (+ accum (first scitance)) (rest scitance)))) • (defun sucet1 (args) (sucet-aux 0 args))
Funkcie II • (defun sucet2 (args) (labels ((sucet-aux (accum scitance) (if (null scitance) accum (sucet-aux (+ accum (first scitance)) (rest scitance))))) (sucet-aux 0 args)))
Funkcie II • (defun sucet3 (scitance &optional (accum 0)) (if (null scitance) accum (sucet3 (rest scitance) (+ accum (first scitance)))))
Funkcie II • (floor 5.5) • (+ 1 (floor 5.5)) • (print (floor 5.5))
Funkcie II • (values 2 5) • (values 2 5 4 5) • (values)
Funkcie II • ((lambda () ((lambda () (values 1 2))))) • (print (values))
Funkcie II • (multiple-value-call #'+ (values 1 2 3)) • (multiple-value-list (values 1 2 3)) • (multiple-value-bind (x y z) (values 1 2 3) (list x y z))
Funkcie II • (macroexpand `(multiple-value-list (values 1 2))) (MULTIPLE-VALUE-CALL #'LIST (VALUES 1 2))
Funkcie II • (macroexpand `(multiple-value-bind (x y) (values 1 2) (list x y))) (LET* ((#:G4849 (MULTIPLE-VALUE-LIST (VALUES 1 2))) (X (POP #:G4849)) (Y (POP #:G4849))) (LIST X Y))
Funkcie II • (let (x y z) (multiple-value-setq (x y z) (values 1 2)) (list x y z)) • (let (x y z) (setf (values x y z) (values 1 2 3)) (list x y z)) • (let (x y z) (setf (values x y z) (values 1 2 3 4)) (list x y z)) • (let (x y z) (setf (values x y z) (values 1 2)) (list x y z))