Hi Dean, > (de fltr (Buf Ln) > (setq New_buf (mapcar '((Ele) (pack (tail (- (length Ln)) (chop Ele)))) > (filter '((Ele) (pre? Ln Ele)) Buf)))) > ... > #: (fltr '(aa ab) 'ab) > #-> (NIL)
You can use 'extract' to get exactly the results you need: (de fltr (Buf Ln) (let N (inc (length Ln)) (extract '((Ele) (when (pre? Ln Ele) (pack (nth (chop Ele) N)) ) ) Buf ) ) ) Perhaps 'match' is more elegant than 'pre?' and 'nth' or 'tail': (de fltr (Buf Ln) (let Pat (conc (chop Ln) '(@Rest)) (use @Rest (extract '((Ele) (and (match Pat (chop Ele)) (pack @Rest)) ) Buf ) ) ) ) In both cases: : (msg (fltr '(aa ab abc) 'ab)) -> ("c") ♪♫ Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe