Hi CK, Im also currently learning PicoLisp web dev and this thread is indeed informative.
For your question I think Alex mentioned about psh? Im not so sure but I think I read somewhere about psh and its usage and this might be the answer. BR, geo > On Sep 3, 2019, at 10:55 PM, C K Kashyap <ckkash...@gmail.com> wrote: > > Hi Alex, > While on this subject - is there any advice on speeding up the dev loop for > app development? Right now, I kill pil and restart pil each time I make a > change to the app. I suppose I could have my logic written in a separate .l > file and have it be loaded in the main server file. > Regards, > Kashyap > >> On Mon, Sep 2, 2019 at 7:10 AM C K Kashyap <ckkash...@gmail.com> wrote: >> For some reason, I cannot see Grant's messages in the thread in gmail. I was >> able to read the message by visiting mail-archive. >> >> Thanks Grant for your updated sample ... I am in the process of GUIfying the >> todo sample https://picolisp.com/wiki/?taskDB >> >> Regards, >> Kashyap >> >>> On Mon, Sep 2, 2019 at 2:14 AM Alexander Burger <a...@software-lab.de> >>> wrote: >>> Hi Grant, >>> >>> > > In general it is not recommended to keep DB objects in globals, as they >>> > > cannot >>> > > be garbage collected. >>> > > >>> > > ☺/ A!ex >>> >>> > In the `family.l` example it seems to store the "current person" object >>> > in the >>> > `val` of *DB. Is this just for convenience for the sample? Or is this >>> > different since the global symbol isn't a reference to the object itself? >>> >>> This is ok. With "globals" I meant global internal symbols. '*DB' holds an >>> *external* symbol, i.e. '{1}', which is the root object of the database. >>> >>> So what "family.l" does with >>> >>> (set *DB (request '(+Man) ... >>> >>> is create a new '+Man' object and store it in '{1}' in the database. >>> >>> The global '*DB' is not changed here (and in fact never should be; it should >>> always point to '{1}') and is known by the system - most notably by the >>> garbage >>> collector. >>> >>> >>> > I assume the correct pattern for an action form is to use some global to >>> > hold >>> > a reference to some indexable ID for the DB object we are interested in? >>> >>> This is possible, but typically nothing is kept globally, and the user is >>> presented a search dialog ('choPerson' in "family.l"). >>> >>> Note that in fact the GUI *does* use a global '*ID' but this gets a new >>> value >>> with each form and thus does not inhibit the previous values to become >>> garbage. >>> >>> Also, search dialogs typically keep searched values in globals ('*PrsNm', >>> '*PrsJob', '*PrsDat1' etc.) to allow the user to search for similar things >>> in >>> the same context, but these values are strings, numbers, dates etc. and not >>> DB >>> objects. >>> >>> ☺/ A!ex >>> >>> -- >>> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe