Re: Storing data and code in a Db with LISP-like interface
Date: 31 Mar 2006 19:17:37 -0800
Message-ID: <1143861457.220413.266760_at_g10g2000cwb.googlegroups.com>
>>> (create 'c' 'a' 'r')
>>>
>> Why does car have to be written 'c' 'a' 'r'?
>> Why not (create "car")
Because the create function creates a relation between two or more parameters where each parameter is separated by a space. In the syntax (create "car"), there is only one parameter (as far as the parser can determine according to the simple rules it knows).
>> And it could probably be simpler than that.
>>
>Yes. car
The problem with simplying 'c' 'a' 'r' to "car" to car is how to distinguish between:
1) the vehicle car 2) the name car 3) the string car 4) and the individual symbols c, a, r.
In order to facilitate recursion, ideally there should be a simple rule that is applied over and over again. The side affect is that what humans perceive to be a simple thing is actually quite high level and requires many recursions to acheive.
Below is a simple and systematic way:
Symbol c: c Symbol a: a Symbol r: r
String car: (select c a r)
Name car: (select * symbol (select c a r)) Vehicle car: (select * name (select * symbol (select c a r)))
As you can see, referring to something simple like the vehicle car, already required quite a few recursions. To reduce this burden, currently I have grudgingly adopted the following conventions which are translated to their equivalent by the parser.
'c' => Symbol c 'a' => Symbol a 'r' => Symbol r 'car' => String car: (select c a r)
No shortcut for name car
car or "car" => Vehicle car: (select * name (select * symbol (select c a r)))
Thus, there is quite a bit more behind a simple looking expression like (create god child adam). Received on Sat Apr 01 2006 - 05:17:37 CEST