Context - A set of bindings

Binding - An association of a Name and Object

Scope - A lexical or execution subcontext. Interpreters create a complete Context by combining a number or Scopes searched in a determined order where a binding in one may mask the same name in another.

Object - Context dependent, see below.

 

In most contexts, the names in a context must be unique.


What is being bound?

It really can depend on the context.  In an interpreter that is an object oriented program, the names resolve to memory addresses whether statically allocated in the interpreter or dynamically on a heap or stack.  A cardname defines a card model instance in a Rails app and an ActiveRecord record in a SQL database.  That cardname will also have a URL, so it can be accessed as a webpage.

 

MCP is just like any other programming language context in that names are for data objects, but they will appear in different forms when the data has been translated into different contexts (e.g. from Ruby Rails model code to URLs for external access).  We need to decide what the universal currency object is.  As in what a "card" is for Wagn.  Do we really want to use "Pattern"?  We may just call them "pattern objects" then either term can apply depending on context.

 

Storage - (cached? virtualized?)   Not sure if this is actually part of binding.  It may be that these are implementation issues related to bound objects, therefore they may be present in the internal APIs, but not the protocol and required interfaces.  

Execution Context - server, client, cookie, distributed, ?