4.9.1. Cycle

Die folgende Funktion definiert ein cycle Pattern mit den Elementen '(2 1 3 4) und bindet dieses Pattern an das Symbol *testpattern*.

(defparameter *testpattern* (new cycle :of '(2 1 3 4)))

Daten werden mit der Funktion next generiert. Wenn die Funktion kein Argument hat, wird pro Funktionsaufruf genau ein Wert gemäß den Regeln des Patterns generiert. Ein cycle Pattern hat die Eigenschaft, dass die einzelnen Elemente zyklisch ausgelesen werden.

(next *testpattern*) ;; -> 2
(next *testpattern*) ;; -> 1
(next *testpattern*) ;; -> 3
(next *testpattern*) ;; -> 4
(next *testpattern*) ;; -> 2
(next *testpattern*) ;; -> 1
(next *testpattern*) ;; -> 3
(next *testpattern*) ;; -> 4
(next *testpattern*) ;; -> 2

Wird der Funktion next als 2. Argument der Wahrheitswert T übergeben, wird eine komplette Periode bis zum Ende der aktuellen Periode als Liste zurückgegeben.

(next *testpattern* t) ;; -> (2 1 3 4)
(next *testpattern* t) ;; -> (2 1 3 4)
(next *testpattern* t) ;; -> (2 1 3 4)

Eine Zahl als 2. Argument von next gibt die Anzahl der zu generierenden Daten an:

(next *testpattern* 100)

;; -> (2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3
;;     4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1
;;     3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4)

Pattern sind grundsätzlich unendlich, d.h. die Funktion next gibt immer einen Wert aus.

results matching ""

    No results matching ""