Your code has several unclearities/problems. Why do you create and store a new Symbol in the property and then set it's value to the value you want to store? Why don't you just store the value in the property? (Like (put *DB k v) for kv-add) Why do you set the value of the first symbol to "Root" ?
If you want to get the complete property list of any symbol (internal or in the DB) just call 'getl on it Ursprüngliche Nachricht Von: ckkash...@gmail.com Gesendet: 16. April 2019 16:42 An: picolisp@software-lab.de Antworten: picolisp@software-lab.de Betreff: Re: Database question Hi Alex, Does this look reasonable? I tried to implement key-value store/get. I am not sure how to enumerate all the keys though. (pool "test.db") (set *DB "ROOT") (de kv-add (k v) (let nv (new T) (set nv v) (put *DB k nv) (commit))) (de kv-get (k) (val (get *DB k))) Regards, Kashyap On Sun, Apr 14, 2019 at 1:58 PM C K Kashyap <ckkash...@gmail.com> wrote: Thanks Alex! Regards, Kashyap On Sun, Apr 14, 2019 at 1:20 PM Alexander Burger <a...@software-lab.de> wrote: On Sun, Apr 14, 2019 at 12:54:19PM -0700, C K Kashyap wrote: > Is the builtin database in picolisp tied to OOP? The documentation seems to > indicate it. Not necessarily. The DB consists of three independent layers. Persistent "external" symbols are the base. They are directly in the core language. They are used to implement b-trees, and in addition - and on top of those - the entity and relation objects (only those are OOP). > Is there a way I could use the DB to just accrue immutable > facts (just like Clojure Datomic works)? Just create external symbols (with 'new' without a class), and store stuff into their values and property lists. > Is there a non-OOP sample that I could use as a starting point? The tutorial at https://software-lab.de/doc/tut.html#ext ☺/ A!ex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe PԔ � &j)m����X�����zV�u�.n7�