Hi Kashyap,

sorry, I was busy! I did not find the time to install and deeply check all your
code.


> 1. Query all open items that have the given tag

>> I think I have a workaround for my question 1 :) - if I use the status as
>> an inline relation instead of a link that is.

I think it makes no difference. It is OK if the status is an object.

   (collect 'tgs '+Item (db 'nm '+Tag "foo"))

or

   (mapcan
      '((Tag)
         (collect 'tgs '+Item Tag) )
      (collect 'nm '+Tag "foo") )



> 2. Query all items that have "ALL" the given tags - for example all
> items tagged with RED and GREEN -> this should only generate ITEM3

Doesn't the above 'mapcan' do that?


> Okay - I've got the answer to the second question as well. I am not sure of
> the efficiency though - I essentially collect all items that have the tag
> RED and then collect all the items that have the BLUE and then do "sect" on
> the output lists. Is this reasonable?
> 
> 
> (setq L1 (mapcar '( (I) (get I 'itm)) (collect 'nm '+Tag "BLUE")))
> 
> (setq L2 (mapcar '( (I) (get I 'itm)) (collect 'nm '+Tag "RED")))


Yes, I would just write

   (mapcar '((This) (: itm)) (collect 'nm '+Tag "BLUE"))


but using the advantage of 'collect', the following should give the same
result:

   (collect 'nm '+Tag "BLUE" NIL T 'itm)

☺/ A!ex

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to