Thanks Alex,
I'll try it out.
Regards,
Kashyap

On Mon, Nov 25, 2019 at 11:24 PM Alexander Burger <[email protected]>
wrote:

> Hi Kashyap,
>
> > Here's a new problem - as per the previous conversation, it seems that I
> > could use "collect" to get the items that I am interested in.
> >
> > (let (RED (db 'nm '+TagVal "RED")
> >       BLUE (db 'nm '+TagVal "BLUE"))
> >       (setq L1 (collect 'v '+Tag RED RED 'itm))
> >       (setq L2 (collect 'v '+Tag BLUE BLUE 'itm)))
> > (sect L1 L2) --> this is what I want
> > It looks like the step> method of QueryChart calls "prove" which tells me
> > that it can only do pilog.
>
> Yes +QueryChart needs Pilog. In general, Pilog is also recommended if the
> possible result set may be large and long 'collect'ed lists become
> inefficient.
>
> So the 'v' index of '+Tag' needs to be traversed twice, once for the RED
> object
> and once for BLUE.
>
> To do the above in Pilog, you need a combined generator and a filter with
> 'or':
>
>    ...
>    @Col1 (db 'nm '+TagVal "RED")
>    @Col2 (db 'nm '+TagVal "BLUE")
>    ...
>    (select (@Tag)
>       (...
>          ((v +Tag @Col1  v +Tag @Col2))  # Traverse tree twice
>          ... )
>       (or ((same @Col1 @Tag v)) ((same @Col2 @Tag v)))  # filter with OR
>       ... )
>
> or generate directly
>
>    ...
>    @Col1 "RED"
>    @Col2 "BLUE"
>    ...
>    (select (@Tag)
>       (...
>          ((nm +TagVal @Col1  nm +TagVal @Col2) (v +Tag))
>          ... )
>       (or ((same @Col1 @Tag v nm)) ((same @Col2 @Tag v nm)))
>       ... )
>
> (Not tested!)
>
> ☺/ A!ex
>
> --
> UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe
>

Reply via email to