Re: Storing data and code in a Db with LISP-like interface
Date: 24 Apr 2006 20:13:18 -0700
Message-ID: <1145934798.242459.84720_at_i40g2000cwc.googlegroups.com>
> Also I will be posting an updated Food Judge Example as it was a > quickie and not fully commented.
Here it is. Fresh of the hard disk. Bon appétit! Oh, I renamed "type" to "thing", as it didn't seem to fool anybody into believing that dbd is just like RMDBs :) Also I classified john as judge, well since the example title says Food Judge and maybe later we want to add participants and spectators.
// Food Judge Example using dbd.
// Create a thing named person.
(create thing instance (new))
(create (it) name (findElseAdd word instance 'person'))
// Create a thing named judge.
(create thing instance (new))
(create (it) name (findElseAdd word instance 'judge'))
// Create a person/judge named john.
(create person instance (new))
(create judge instance (it))
(create (it) name (findElseAdd word instance 'john'))
// Create a verb named like.
(create verb instance (new))
(create (it) name (findElseAdd word instance 'like'))
// Create a thing named entry (as in food entry).
(create thing instance (new))
(create (it) name (findElseAdd word instance 'entry'))
// Create an entry named leftOver1.
(create entry instance (new))
(create (it) name (findElseAdd word instance 'leftOver1'))
// Create a thing named fruit.
(create thing instance (new))
(create (it) name (findElseAdd word instance 'fruit'))
// Create a fruit/entry named apple1.
(create fruit instance (new))
(create entry instance (it))
(create (it) name (findElseAdd word instance 'apple1'))
// Create a thing name vegetable.
(create thing instance (new))
(create (it) name (findElseAdd word instance 'vegetable'))
// Create a vegetable/entry named broccoli1.
(create vegetable instance (new))
(create entry instance (it))
(create (it) name (findElseAdd word instance 'broccoli1'))
// Create a fruit/vegetable/entry named tomato1.
(create fruit instance (new))
(create vegetable instance (it))
(create entry instance (it))
(create (it) name (findElseAdd word instance 'tomato1'))
// Create john likes lefover1.
(create john like leftOver1)
// Create john likes apple1.
(create john like apple1)
// Create john likes broccoli1.
(create john like broccoli1)
// Create john likes tomato1.
(create john like tomato1)
// Hmm, maybe we need to also classify john as a pig!
// Find which entries john likes. // Either of the below expressions // displays leftOver1, apple1, broccoli1, tomato1 // in 4 consecutive dialog boxes.
(msgbox (select john like *))
(msgbox (and (select john like *)
(select entry instance *)))
// Find which fruit entries john likes.
// Displays apple1 and tomato1.
(msgbox (and (select john like *)
(select fruit instance *)))
// Find which vegetable entries john likes.
// Displays broccoli1 and tomato1.
(msgbox (and (select john like *)
(select vegetable instance *)))
// Find which fruit/vegetable entries john likes.
// Displays tomato1 in a dialog box.
(msgbox (and (select john like *)
(select fruit instance *) (select vegetable instance *)))Received on Tue Apr 25 2006 - 05:13:18 CEST