Funkce pro práci se seznamy

(acad _strlsort list)
 
Argumenty:
 
list
- seznam řetězců, které mají být seřazeny
 
Popis:
  - seřadí seznam řetězců v abecedním pořádku
 
Návratová hodnota:
  - list - v abecedním pořádku
 

- nil - v případě nedostatku paměti nebo špatném typu seznamu

 
Příklady:
  (setq mos '("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"))
    vrací ("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")
  (acad_strlsort mos)
    vrací ("Apr" "Aug" "Dec" "Feb" "Jan" "Jul" "Jun" "Mar" "May" "Nov" "Oct" "Sep")

(append [list ...])
 
Argumenty:
 
list
- seznam
 
Popis:
  - vytvoří jeden seznam z libovolného počtu seznamů
 
Návratová hodnota:
  - seznam - všechny argumenty jsou spojeny do jednoho seznamu
  - nil - nejsou uvedeny žádné argumenty
 
Příklady:
  (append '(a b) '(c d))
    vrací (A B C D)
  (append '((a)(b)) '((c)(d)))
    vrací ((A) (B) (C) (D))

(assoc element alist)
 
Argumenty:
 
element
- klíč elementu v asociačním seznamu
 
alist
- prohledávaný asociační seznam
 
Popis:
  - hledá prvek v asociačním seznamu
 
Návratová hodnota:
  - nalezená hodnota z asociačního seznamu - proběhlo-li vše v pořádku
 

- nil - není nalezena klíčová hodnota

 
Příklady:
  (setq al '((name box) (width 3) (size 4.7263) (depth 5)))
    vrací ((NAME BOX) (WIDTH 3) (SIZE 4.7263) (DEPTH 5))
  (assoc 'size al)
    vrací (SIZE 4.7263)
  (assoc 'weight al)
    vrací nil

(car list)
 
Argumenty:
 
list
- seznam
 
Popis:
  - vrátí první prvek seznamu
 
Návratová hodnota:
  - první element seznamu
  - nil - je-li seznam prázdný
 
Příklady:
  (car '(a b c))
    vrací A
  (car '((a b) c))
    vrací (A B)
  (car '())
    vrací nil

(cdr list)
 
Argumenty:
 
list
- seznam
 
Popis:
  - vrácení seznamu bez prvního prvku
 
Poznámka:
  - má-li seznam dva prvky, vrátí funkce cdr druhý prvek samotný, ne v listu
 
Návratová hodnota:
 
- seznam - vrátí seznam list bez prvního prvku
  - nil - je-li seznam list prázdný
 
Příklady:
  (cdr '(a b c))
    vrací (B C)
  (cdr '((a b) c))
    vrací (C)
  (cdr '())
    vrací nil
  (cdr '(a . b))
    vrací B
  (cdr '(1 . "Text"))
    vrací "Text"

(cons new-first-element list-or-atom)
 
Argumenty:
 
new-first-element
- přidávaný prvek na začátek seznamu
 
- atom nebo seznam
 
list-or-atom
- seznam nebo atom
 
Popis:
  - přidá prvek na začátek seznamu, nebo vytvoří tečka dvojici
 
Návratová hodnota:
  - seznam list-or-atom s novým prvním prvkem - v případě, že list-or-atom je seznam
  - tečka dvojici new-first-element . list-or-atom - v případě, že list-or-atom je atom
 
Příklady:
  (cons 'a '(b c d))
    vrací (A B C D)
  (cons '(a) '(b c d))
    vrací ((A) B C D)
  (cons 'a 2)
    vrací (A . 2)

(foreach name list [expr...])
 
Argumenty:
 
name
- proměnná zastupující prvky v seznamu (vždy jeden)
 
list
- procházený seznam
 
expr
- výraz, který má být vypočítán pro každý element v seznamu list
 
Popis:
  - vypočítá výraz pro všechny členy seznamu
 
Návratová hodnota:
  - výsledek posledního výrazu
  - nil - nejsou-li specifikovány žádné výrazy
 
Příklady:
  Tisk všech elementů v seznamu:
  (foreach n '(a b c) (print n))
    vrací A
    vrací B
    vrací C C
  Vytiskne všechny prvky A B C a vrátí C

(last list)
 
Argumenty:
 
list
- seznam
 
Popis:
  - zjištění posledního elementu v seznamu
 
Návratová hodnota:
  - atom nebo seznam
 
Příklady:
  (last '(a b c d e))
    vrací E
  (last '(a b c (d e)))
    vrací (D E)

(length list)
 
Argumenty:
 
list
- seznam
 
Popis:
  - zjištění délky seznamu (počet elementů v seznamu)
 
Návratová hodnota:
  - integer
Příklady:
  (length '(a b c d))
    vrací 4
  (length '(a b (c d)))
    vrací 3
  (length '())
    vrací 0

Podívej se na funkci vl-list-length.

(list [expr...])
 
Argumenty:
 
expr
- výraz AutoLISPu
 
Popis:
  - vytvoří seznam z libovolného počtu výrazů
 
Návratová hodnota:
  - seznam
  - nil - nejsou-li uvedeny žádné argumenty
 
Příklady:
  (list 'a 'b 'c)
    vrací (A B C)
  (list 'a '(b c) 'd)
    vrací (A (B C) D)
  (list 3.9 6.7)
    vrací (3.9 6.7)

Podívej se na funkce quote, vl-list* a vl-list-length.

(listp item)
 
Argumenty:
 
item
- libovolný atom, seznam nebo výraz
 
Popis:
  - zjištění zda je položka seznam
 
Návratová hodnota:
  - T - jestliže je položka item seznam
  - nil - v opačném případě
 
Příklady:
  (listp '(a b c))
    vrací T
  (listp 'a)
    vrací nil
  (listp 4.343)
    vrací nil
  (listp nil)
   

vrací T

  (listp (setq v1 '(1 2 43)))
    vrací T

Podívej se na funkce vl-list* a vl-list-length.

(mapcar function list1... listn)
 
Argumenty:
 
function
- funkce
 
list1... listn
- jeden nebo více seznamů
    - počet seznamů musí odpovídat počtu argumentů požadovaných funkcí function
 
Popis:
  - vrátí seznam výsledků vypočítaných funkcí provedenou nad individuálními elementy seznamu nebo seznam je dodán jako argument funkci
 
Návratová hodnota:
  - seznam
 
Příklady:
  (setq a 10 b 20 c 30)
    vrací 30
  (mapcar '1+ (list a b c))
    vrací (11 21 31)
  odpovídá sekvenci příkazů:
    (1+ a)
    (1+ b)
    (1+ c)

(member expr lst)
 
Argumenty:
 
expr
- hledaný výraz
 
lst
- seznam, v kterém je hledán výraz expr
 
Popis:
  - hledá první výskyt výrazu v seznamu a vrací zbytek seznamu (včetně hledaného prvku)
 
Návratová hodnota:
  - seznam
  - nil - výraz expr se v seznamu nevyskytuje
 
Příklady:
  (member 'c '(a b c d e))
    vrací (C D E)
  (member 'q '(a b c d e))
    vrací nil

(nth n list)
 
Argumenty:
 
n
- pořadí prvku v seznamu (0 = první prvek)
 
list
- seznam
 
Popis:
  - zjistí hodnotu n-tého prvku v seznamu
 
Návratová hodnota:
  - n-tý prvek seznamu
  - nil - v případě, že n je větší než počet prvků v seznamu - 1
 
Příklady:
  (nth 3 '(a b c d e))
    vrací D
  (nth 0 '(a b c d e))
    vrací A
  (nth 5 '(a b c d e))
    vrací nil

(reverse list)
 
Argumenty:
 
list
- seznam
 
Popis:
  - přehodí pořadí prvků v seznamu
 
Návratová hodnota:
  - seznam
 
Příklady:
  (reverse '((a) b c))
    vrací (C B (A))

(subst newitem olditem lst)
 
Argumenty:
 
newitem
- atom nebo seznam
 
olditem
- atom nebo seznam
 
list
- seznam
 
Popis:
  - vyhledá v seznamu všechny staré položky (olditem) a vrátí kopii seznamu, kde jsou nalezené staré položky nahrazeny novými položkami (newitem)
 
Návratová hodnota:
  - změněný seznam - v případě, že existovali položky olditem
  - původní seznam - v případě, že nebyla nalezena ani jedna položka olditem
 
Příklady:
  (setq sample '(a b (c d) b))
    vrací (A B (C D) B)
  (subst 'qq 'b sample)
    vrací (A QQ (C D) QQ)
  (subst 'qq 'z sample)
    vrací (A B (C D) B)
  (subst 'qq '(c d) sample)
    vrací (A B QQ B)
  (subst '(qq rr) '(c d) sample)
    vrací (A B (QQ RR) B)
  (subst '(qq rr) 'z sample)
    vrací (A B (C D) B)

(vl-consp list-variable)
 
Argumenty:
 
list-variable
- seznam
 
Popis:
  - určí je-li nebo není-li seznam rovný hodnotě nil
  - funkce pozná zda proměnná obsahuje definici seznamu
 
Návratová hodnota:
  - T - parametr je seznam různý od nil
  - nil - v opačném případě
 
Příklady:
  _$ (vl-consp nil)
    vrací nil
  _$ (vl-consp t)
    vrací nil
  _$ (vl-consp (cons 0 "LINE"))
    vrací T

(vl-every predicate-function list [list]...)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje tolik argumentů kolik je seznamů list a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkce:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - ověří zda výrok je pravdivý pro každou kombinaci elementů
 
Návratová hodnota:
  - T - když predicate-function vrací hodnoty různé od nil pro každou kombinaci elementů
  - nil - v opačném případě
 
Příklady:
  Zjištění zda existují prázdné soubory v aktuálním adresář:
  _$ (vl-every '(lambda (fnm) (> (vl-file-size fnm) 0))
  (vl-directory-files nil nil 1) )
    vrací T
   
  Ověří zda je seznam v proměnné TEST seřazen podle "<=":
  _$ (setq nlst (list 0 2 pi pi 4))
    vrací (0 2 3.14159 3.14159 4)
  _$ (vl-every '<= nlst (cdr nlst))
    vrací T
   
  _$ (vl-every '= '(1 2) '(1 2 3))
    vrací T
  $ (vl-every '= '(1 2) '(1 3))
    vrací nil

(vl-list* object [object]...)
 
Argumenty:
 
object
- libovolný objekt LISPu
 
Popis:
  - vytvoří a vrátí seznam
 
Návratová hodnota:
  - atom - je-li objekt object atom
  - tečka dvojice - jsou-li všechny argumenty atomy
  - tečkovaný seznam - poslední argument je atom a žádný předchozí prvek není atom
  - seznam - žádný z předchozích případů nenastal
 
Příklady:
  _$ (vl-list* 1)
    vrací 1
  _$ (vl-list* 0 "text")
    vrací (0 . "TEXT")
  _$ (vl-list* 1 2 3)
    vrací (1 2 . 3)
  _$ (vl-list* 1 2 '(3 4))
    vrací (1 2 3 4)

Podívej se na funkci list.

(vl-list->string char-codes-list)
 
Argumenty:
 
char-codes-list
- seznam nezáporných integerů menších než 256
 
Popis:
  - sloučí znaky asociované se seznamem integerů do řetězce
 
Návratová hodnota:
  - řetězec znaků, kde každý znak je založen na jednom z integerů obsažených v seznamu char-codes-list
 
Příklady:
  _$ (vl-list->string nil)
    vrací ""
  _$ (vl-list->string '(49 50))
    vrací "12"

Podívej se na funkci vl-string->list.

(vl-list-length list-or-cons-object)
 
Argumenty:
 
list-or-cons-object
- true nebo tečkovaný seznam
 
Popis:
  - vypočítá délku seznamu, je-li seznam true seznam
 
Návratová hodnota:
  - integer - délka řetězce je-li argument true seznam
 

- nil - když list-or-cons-object je tečkový seznam

 
Příklady:
  _$ (vl-list-length nil)
    vrací 0
  _$ (vl-list-length '(1 2))
    vrací 2
  _$ (vl-list-length '(1 2 . 3))
    vrací nil

Podívej se na funkci listp.

(vl-member-if predicate-function list)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje jeden argument a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkce:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - určí je-li výrok pravdivý pro jeden z členů seznamu
 
Návratová hodnota:
  - seznam - začíná prvkem, který splnil podmínku a pokračuje do konce původního seznamu
 

- nil - žádný element nesplnil podmínku

 
Příklady:
  Nakreslení čáry:
  _$ (command "_.LINE" '(0 10) '(30 50) nil)
    vrací nil
  Vrácení asociačního seznamu popisujícího entitu, je-li entita čára:
   
  _$ (vl-member-if '(lambda (x) (= (cdr x) "AcDbLine"))
  (entget (entlast)))
    vrací ((100 . "AcDbLine") (10 0.0 10.0 0.0) (11 30.0 50.0 0.0) (210 0.0 0.0 1.0))

Podívej se na funkci vl-member-if-not.

(vl-member-if-not predicate-function list)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje jeden argument a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkceí:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - určí je-li výrok nil pro jeden z členů seznamu
 
Návratová hodnota:
  - seznam - začíná prvkem, který nesplní podmínku a pokračuje do konce původního seznamu
  - nil - všechny elementy splnily podmínku
 
Příklady:
  _$ (vl-member-if-not 'atom '(1 "Str" (0 . "line") nil t))
    vrací ((0 . "line") nil T)

Podívej se na funkci vl-member-if.

(vl-position symbol list)
 
Argumenty:
 
symbol
- libovolná značka AutoLISPu
 
list
- true seznam
 
Popis:
  - zjistí index specifikované položky seznamu
 
Návratová hodnota:
  - integer - index pozice symbolu symbol v seznamu list
  - nil - symbol symbol neexistuje v seznamu
 
Příklady:
  _$ (setq stuff (list "a" "b" "c" "d" "e"))
    vrací ("a" "b" "c" "d" "e")
  _$ (vl-position "c" stuff)
    vrací 2

(vl-remove element-to-remove list)
 
Argumenty:
 
element-to-remove
- hodnota elementu, který má být vyjmut
 
- může být libovolný datový typ LISPu
 
list
- seznam
 
Popis:
  - vymaže prvky ze seznamu
 
Návratová hodnota:
  - seznam list mimo prvky odpovídající prvkům k vymazání element-to-remove
 
Příklady:
  _$ (vl-remove pi (list pi t 0 "abc"))
    vrací (T 0 "abc")

(vl-remove-if predicate-function list)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje jeden argument a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkce:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - získá všechny prvky uvedeného seznamu, které selžou při testovací funkci
 
Návratová hodnota:
  - seznam obsahující všechny prvky ze seznamu list, u kterých funkce predicate-function vrací nil
 
Příklady:
  _$ (vl-remove-if 'vl-symbolp (list pi t 0 "abc"))
    vrací (3.14159 0 "abc")

(vl-remove-if-not predicate-function list)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje jeden argument a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkce:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - získá všechny prvky uvedeného seznamu, které projdou přes testovací funkci
 
Návratová hodnota:
  - seznam obsahující všechny prvky ze seznamu list, u kterých funkce predicate-function vrací ne-nilovou hodnotu
 
Příklady:
  _$ (vl-remove-if-not 'vl-symbolp (list pi t 0 "abc"))
    vrací (T)

Podívej se na funkci vl-member-if.

(vl-some predicate-function list [list]...)
 
Argumenty:
 
predicate-function
- testovací funkce, libovolná funkce, která akceptuje tolik argumentů kolik je seznamů list a vrátí T pro každou uživatelem specifikovanou podmínku
 
- možné tvary funkceí:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
 
  - (FUNCTION (LAMBDA (A1 A2) ...))
 
list
- testovaný seznam
 
Popis:
  - kontroluje zda není výrok nil pro jednu kombinaci elementů
 
Návratová hodnota:
  - hodnotu výroku - když predicate-function vrací hodnotu různou od nil
  - nil - v opačném případě
Příklady:
  Příklad ověří zda seznam nlst (číselný seznam) má rovnající se prvky v následujícím pořadí:
  _$ (setq nlst (list 0 2 pi pi 4))
    vrací (0 2 3.14159 3.14159 4)
  _$ (vl-some '= nlst (cdr nlst))
    vrací T

(vl-sort list comparison-function)
 
Argumenty:
 
list
- seznam
 
comparison-function
- porovnávací funkce, libovolná funkce, která akceptuje dva argumenty a vrátí T (nebo libovolnou ne-nilovou hodnotu), když první argument předchází druhý v řadícím pořádku
 
- možné tvary funkce:
 
  - jméno funkce
 
  - '(LAMBDA (A1 A2) ...)
      - (FUNCTION (LAMBDA (A1 A2) ...))
 
Popis:
  - seřadí prvky seznamu podle podmínky dané ve funkci comparison-function
 
Návratová hodnota:
  - seřazený seznam list podle podmínek z funkce comparison-function. Duplicitní elementy jsou eliminovány ze seznamu
 
Příklady:
  Seřazení seznamu čísel:
  _$ (vl-sort '(3 2 1 3) '<)
    vrací (1 2 3) ;
   
  Seřazení seznamu 2D bodů podle Y souřadnce:
  _$ (vl-sort '((1 3) (2 2) (3 1))
  (function (lambda (e1 e2)
  (<(cadr e1) (cadr e2)) ) ) )
    vrací ((3 1) (2 2) (1 3))

(vl-sort-i list comparison-function)
 
Argumenty:
 
list
- seznam
 
comparison-function
- porovnávací funkce, libovolná funkce, která akceptuje dva argumenty a vrátí T (nebo libovolnou ne-nilovou hodnotu), když první argument předchází druhý v řadícím pořádku
 
- možné tvary funkce:
      - jméno funkce
      - '(LAMBDA (A1 A2) ...)
      - (FUNCTION (LAMBDA (A1 A2) ...))
 
Popis:
  - seřadí prvky seznamu podle podmínky dané ve funkci comparison-function a vrátí indexy prvků
 
Návratová hodnota:
  - seřazený seznam hodnot indexů prvků ze seznamu list podle podmínek z funkce comparison-function. Duplicitní elementy jsou eliminovány ze seznamu
 
Poznámka:
  - pozor index prvního prvku je 0 !!!
 
Příklady:
  Seřazení seznamu písmen sestupně:
  _$ (vl-sort-i '("a" "d" "f" "c") '>)
    vrací (2 1 3 0)
   
  Seřazení seznamu čísel vzestupně:
  _$ (vl-sort-i '(3 2 1 3) '<)
    vrací (2 1 3 0)
   
  Seřazení seznamu 2D bodů podle Y souřadnice:
  _$ (vl-sort-i '((1 3) (2 2) (3 1))
    (function (lambda (e1 e2)
      (<(cadr e1) (cadr e2)) ) ) )
    vrací (2 1 0)
   
  Seřazení seznamu symbolů:
  _$ (vl-sort-i
  '(a d c b a)
  '(lambda (s1 s2)
  (<(vl-symbol-name s1) (vl-symbol-name s2)) ) )
    vrací (4 0 3 2 1)

(vl-string->list string)
 
Argumenty:
 
string
- řetězec
 
Popis:
  - převádí řetězec na seznam ASCII kódů
 
Návratová hodnota:
  - seznam ASCII kódů, každé číslo odpovídá jednomu znaku v řetězci string
 
Příklady:
  _$ (vl-string->list "")
    vrací nil
  _$ (vl-string->list "12")
    vrací (49 50)

Podívej se na funkci vl-list->string.