Predpokladáme, že postupnosť nie je usporiadaná. Preto ju treba celú prejsť a na záver vrátiť nájdené minimum (väčšie ako zadané číslo). Použitie pomocného argumentu zjednodušuje hľadanie minima.
(defun gtminpom (zoz cislo minimum)
(cond ((null zoz) minimum)
((AND (> (first zoz) cislo) (< (first zoz) minimum)) (gtminpom (rest zoz) cislo (first zoz)))
(T (gtminpom (rest zoz) cislo minimum))
)
)
; Vráti prvé číslo zo zoznamu väčšie ako zadané.
(defun vacsie_ako (zoz cislo)
(cond ((null zoz) NIL)
((> (first zoz) cislo) (first zoz))
(T (vacsie_ako (rest zoz) cislo))
)
)
; Inicializujeme.
(defun gtmin (zoz cislo)
(cond ((null (vacsie_ako zoz cislo)) NIL)
(T (gtminpom zoz cislo (vacsie_ako zoz cislo)))
)
)
Príklady:
(gtmin '(1 2 3 4 5 7 2) 4) -> 5
(gtmin '(1 2 9 7 2) 4) -> 7
(gtmin '(1 3 2) 4) -> NIL