You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

	
Database Commands: <cmd>
	
create{<name>:s}() -> () 
	
delete{<name>:s}() -> () 
	
put{<name>:s}(<key>;<value>) -> ()
	
get{<name>:s}(<key>) -> <value>
	
remove{<name>}(<key>) -> ()
	
iterate{<name>:s}([some(<key>) | some())]
  -> [some(<key>) | some()],<val>
  some() arg indicates begin iteration
  some() return indicates end
  ? arbitrary behavior if table updated during iteration.

	
filter{<name>:s,<newname>:s,<regex>:s}(<pattern>) -> {<count>:n}
  * create new table with by matching table values against <pattern> 

<pattern>	: AND(<pattern>,<pattern>)
		| OR(<pattern>,<pattern>)
		| NOT(<pattern>)
		| EXISTS(<term>;<pattern>)
		| MATCH(<patternterm>)
		| EQUALS(<term>)
  * use operator of <term> of EXISTS to extract embedded list
    to check <pattern> against.
  * might want ALL(<term>;<pattern>)

  
<placeholder>	| PLACEHOLDER()
	
A <patternterm> is a term with embedded SLOT() or MATCH(<pattern>) terms. 
Anything matches a slot. A MATCH(<pattern>) causes recursion of match operation
with new <pattern>. Otherwise, the MATCH proceeds as long as the <patternterm> 
is identical to the instance.

There is a pitfall here in that the <patternterm> can not contain a MATCH opid
intended to match a MATCH opid in the instance as it will be interpreted instead
of matched. Could be fixed with quoting mechanism, but it is unlikely to be a problem.

	
Future addition:
	
We could extend <patternterm> to include MATCHVAR{<name>:s} which adds
matching value to an environment, and then could instantate a result
term from the environment.  Multiple occurences of same MATCHVAR would
require matching instances to be identical.

mapfilter{<name>:s,<regex>:s}(<pattern>;<vpattern>) -> {<count>:n}
  * <vpattern> contains only MATCHVARs and terms to instantiate result.
	  

Protocol
	  
<req>		: !req{<seq>:n}(<cmd>)
<rsp>		: !rsp{<seq>:n}(<result>)
<notice>	: !notice{<seq>:n}(<message>)
  * no response
  
<result>	: !value()(<term>)	
		| !ack() 
		| !fail(<message>)

FTTB : expect straigtforward one-to-one sequential Nuprl sends <req> and gets <rsp>.

Future : 
  - nuprl sends sequence of reqs without waiting for response.
      * possibly add form of requests that don't expect response.
  - add call backs from shadowdb to nuprl.
  - maybe add partial response to return sequence of result terms 
  • No labels