That' great....thank you for both examples.

On 27 January 2017 at 19:03, Alexander Burger <a...@software-lab.de> wrote:

> 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
>

Reply via email to