Funkce podmínkové

(= numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná argumenty na číselnou rovnost
 
Návratová hodnota:
  - T - argumety jsou numericky rovné
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (= 4 4.0) vrací T
  (= 2.4 2.4 2.4) vrací T
  (= 499 499 500) vrací nil
  (= 20 388) vrací nil
  (= "me" "me") vrací T
  (= "me" "you") vrací nil

(/= numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná za sebou následující argumenty na číselnou nerovnost
  - pozorně si prohlědněte příklady !!!
 
Návratová hodnota:
  - T - za sebou následující argumety jsou numericky nerovné
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (/= 10 20) vrací T
  (/= 5.43 5.44) vrací T
  (/= "you" "you") vrací nil
  (/= 10 20 10 20 20) vrací nil
  (/= 10 20 10 20) vrací T
  (/= "me" "you") vrací T

(< numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná za sebou následující argumenty zda argument nalevo je numericky menší než argument napravo
 
Návratová hodnota:
  - T - argument nalevo je numericky menší než argument napravo
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (< 10 20) vrací T
  (< 5.43 5.44) vrací T
  (< "you" "you") vrací nil
  (<357 33.2) vrací nil
  (<2 3 88) vrací T
  (<2 3 4 4) vrací nil

(<= numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná za sebou následující argumenty zda argument nalevo je numericky menší nebo rovný než argument napravo
 
Návratová hodnota:
  - T - argument nalevo je numericky menší nebo rovný než argument napravo
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (<= 10 20) vrací T
  (<= 5.43 5.44) vrací T
  (<= "you" "you") vrací T
  (<= 357 33.2) vrací nil
  (<= 2 3 88) vrací T
  (<= 2 3 4 4) vrací nil

(> numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná za sebou následující argumenty zda argument nalevo je numericky vetší než argument napravo
 
Návratová hodnota:
  - T - argument nalevo je numericky vetší než argument napravo
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (> 120 17) vrací T
  (> "c" "b") vrací T
  (> "you" "you") vrací nil
  (> 3.5 1792) vrací nil
  (> 77 4 2) vrací T
  (> 77 4 4) vrací nil

(>= numstr [numstr] ...)
 
Argumenty:
 
numstr
- řetězec nebo číslo
 
Popis:
  - porovná za sebou následující argumenty zda argument nalevo je numericky vetší nebo rovný než argument napravo
 
Návratová hodnota:
  - T - argument nalevo je numericky vetší nebo rovný než argument napravo
 

- T - je-li zadán pouze jeden argument

 

- nil - v opačném případě

 
Příklady:
  (>= 120 17) vrací T
  (>= "c" "c") vrací T
  (>= "you" "you") vrací T
  (>= 3.5 1792) vrací nil
  (>= 77 4 4) vrací T
  (>= 77 4 9) vrací nil

(and [expr ...])
 
Argumenty:
 
expr
- libovolný výraz
 
Popis:
  - provede logické AND (součin) se zadanými argumenty
 
Návratová hodnota:
  - nil - je-li alespoň jeden argument nil
 

- T - v opačném případě

 

- T - nejsou-li zadány parametry

 
Příklady:
  (and 120 17) vrací nil
  (setq a 103 b nil c "string")
  (and 103 a) vrací T
  (and "you" "you") vrací T
  (and 1.4 a b c) vrací nil
  (and 1.4 a c) vrací T

(Boole operator int1 [int2 ...])
 
Argumenty:
 
operator
- číslo <0,15> reprezentující 16 možných booleovských funkcí dvou argumentů
 
int1, int2...
- celá čísla
 
Popis:
  - slouží jako hlavní bitová funkce
  - funkce Bool akceptuje jednotlivá celá čísla, ale výsledek je nepředvídatelný
 
Poznámka:
Následující celá čísla jsou bitově (logicky) kombinována s funkcí a pravdivostní tabulkou:
 
  Booleovská pravdivostní tabulka
  Int1 Int2 operator bit
  0 0 8
  0 1 4
  1 0 2
  1 1 1
 
  Každý bit Int1 spárováný s odpovídajícím bitem z Int2, specifikuje horizontální řádek v pravdivostní tabulce. Bit výsledku je buď 0 nebo 1 v závislosti na nastavení operator bitu příslušejícího danému řádku pravdivostní tabulky.
  Je-li odpovídající bit v operator nastaven, výsledek je 1, v opačném případě je výsledek 0. Některé hodnoty operátoru odpovídají standardním booleovským funkcím viz následující tabulka:
 
  Operator Operation Výsledkový bit je 1 když
  1 AND oba vstupní bity jsou rovny 1
  6 XOR pouze jeden ze vstupních bitů je rovný 1
  7 OR jeden nebo oba vstupní bity jsou rovny 1
  8 NOR oba vstupní bity jsou rovny 0 (jedničkový koplement)
 
Návratová hodnota:
  - integer
 
Příklady:
  Příklad logického AND čísel 12 a 5:
 
(Boole 1 12 5)
vrací 4
  Příklad logického XOR čísel 6 a 5:
 
(Boole 6 6 5)
vrací 3
  Použití nestandardní booleovské operace, výsledek je rovný 1 jsou-li nastaveny odpovídající bity v int2, ale ne v int1:
 
(Boole 4 3 14)
vrací 12

(cond [(test result ...) ...])
 
Argumenty:
 
test
- testovací výraz
 
result
- výsledek
  - funkce akceptuje libovoné číslo/seznam jako argumenty
 
Popis:
  - funkce vyhodnocuje jednotlivé položky seznamu (test výsledek) do té doby než jedna z položek nevrátí hodnotu různou od nil
 
Návratová hodnota:
  - poslední zpracovávanou hodnotu v podseznamu
 

- výraz z argumentu test - je-li pouze jeden výraz v podseznamu (není uveden result)

 

- nil - nejsou-li zadány parametry

 
Příklady:
  Použití funkce cond míst funkce abs:
(cond
((minusp a) (- a))
(t a)
)
  Je-li hodnota v proměnné a záporná je převedena na kladné číslo, jinak je vráceno rovnou kladné číslo.
 
  Použití funkce cond, aby simulovala výstup funkce case (jako v PASCALU):
    (cond
    ((= s "Y") 1)
    ((= s "y") 1)
    ((= s "N") 0)
    ((= s "n") 0)
    (t nil)
    )
  Je-li řetězec s roven "Y" nebo "y" vrátí funkce 1, je-li řetězec roven "N" "n" vrátí funkce 0. Nenastane-li ani jeden z případů je výsledek rovný nil.

(eq expr1 expr2)
 
Argumenty:
 
expr1
- libovolný výraz
 
expr2
- libovolný výraz, který má být porovnán s výrazem expr1
 
Popis:
  - porovná dva výrazy zda jsou identické (zda ukazují na stejné výrazy)
 
Návratová hodnota:
 

- T - jsou-li výrazy identické (ukazují na stejné výrazy)

  - nil - v opačném případě
 
Příklady:
  Mějme definované proměné:
    (setq f1 '(a b c))
    (setq f2 '(a b c))
    (setq f3 f2)
  Porovnání f1 a f3:
    (eq f1 f3)
    funkce vrátí nil - protože f1 a f3, i když obsahují stejné hodnoty neukazují na stejný seznam
  Porovnání f3 a f2
    (eq f3 f2)
    funkce vrátí T - protože f3 a f2 ukazují na stejný seznam

Podívej se na funkci equal pro porovnání funkce!

(equal expr1 expr2 [fuzz])
 
Argumenty:
 
expr1
- libovolný výraz
 
expr2
- libovolný výraz, který má být porovnán s výrazem expr1
 
fuzz
- reálné číslo určující o kolik se můžou výrazy expr1 a expr2 maximálně lišit
 
Popis:
  - porovná dva výrazy zda jsou identické (mají stejnou hodnotu)
 
Návratová hodnota:
 

- T - jsou-li výrazy identické

  - nil - v opačném případě
 
Příklady:
  Mějme definované proměné:
    (setq f1 '(a b c))
    (setq f2 '(a b c))
    (setq f3 f2)
    (setq a 1.123456)
    (setq b 1.123457)
  Porovnání f1 a f3:
    (eq f1 f3)
    funkce vrátí T
  Porovnání f3 a f2:
    (eq f3 f2)
    funkce vrátí T
  Porovnání a a b:
    (eq a b)
    funkce vrátí nil - hodnoty se liší o 0.000001
  Porovnání a a b:
    (eq a b0.000001)
    funkce vrátí T - je definována tolerance 0.000001

(if testexpr thenexpr [elseexpr])
 
Argumenty:
 
testexpr
- podmínka
 
thenexpr
- výraz, který se provede je-li splněna podmínka (vyhodnocení testexpr není nil)
 
elseexpr
- výraz, který se provede není-li splněna podmínka (vyhodnocení testexpr je nil)
 
Popis:
  - podmínečně vyhodnotí příkaz
 
Návratová hodnota:
  - hodnota vybraného příkazu
 

- nil - není-li obsažena část elseexpr a podmínka testexpr není splněna

 
Příklady:
 

(if (= 1 3) "YES!!" "no.")

    vrací "no."
 

(if (= 2 (+ 1 1)) "YES!!")

    vrací "YES!!"
 

(if (= 2 (+ 3 4)) "YES!!")

    vrací nil

(or [expr...])
 
Argumenty:
 
expr
- libovolný výraz
 
Popis:
  - provede logické OR (součet) se zadanými argumenty
 
Návratová hodnota:
  - T- je-li alespoň jeden argument true
 

- nil - nejsou-li zadány parametry nebo žádný s argumentů není true

 
Příklady:
  (or nil 45 '()) vrací T
  (or nil '()) vrací nil

(repeat int [expr...])
 
Argumenty:
 
int
- kladné celé číslo
 
expr
- jeden nebo více atomů nebo výrazů
 
Popis:
  - opakovaně vyhodnocuje výraz, počet opakování určuje argument int
 
Návratová hodnota:
  - hodnota posledního výrazu nebo atomu
 

- nil - pokud není specifikována expr

 
Příklady:
 

(setq a 10 b 100)

    vrací 100
 

(repeat 4 (setq a (+ a 10)) (setq b (+ b 100)))

    vrací 500
    po skončení je a=50, b=500
 

(repeat 100 "Me" "You")

    vrací "You"

(while testexpr [expr...])
 
Argumenty:
 
testexpr
- výraz obsahující podmínku
 
expr
- jeden nebo více výrazů k vyhodnocení, dokud testexpr není nil
 
Popis:
  - opakovaně vyhodnocuje výrazy, dokud se testexpr nerovná nil
 
Návratová hodnota:
  - hodnota naposled vyhodnoceného výrazu
 
Příklady:
  Následující úsek programu volá 10x funkci some-func, během volání je zvětšována hodnota pomocné proměné test:
    (setq test 1)
    (while (<= test 10)
    (some-func test)
    (setq test (1+ test))
    )