There are actually different ways to redefine a function in C++ and there are ways to redefine variables. But, for the most part, there have to be distinct ways to call the different versions of the definition.
I feel that redefinitions and different ways of looking at an item, whether it is concrete or dynamic, are important features of intelligence. And one of my main ideas is that cross-categorization (or cross-generalization) are important features of intelligence. Although this is different than redefining modules it is a programming issue in AGI. You cannot categorize concepts within simple hierarchies except as a simplification. If the elements or subsets of a set are distinct concepts then they must have distinct features. That means that they must be categorizable in ways other than used to define the set. This may not be a problem for certain definitions of classes or sets where the distinctions are nominal or exist in other dimensions that do not need to be considered but it does create a problem when categorizing concepts. Rereading your second paragraph I see that this is relevant to your comments. You could change the definitions temporally. But, that kind of fix would only be temporary. (Ha-ha,) Ben put a link in the opencog group to something called Allan's Interval Algebra: http://www.ics.uci.edu/~alspaugh/cls/shr/allen.html While that is interesting to look at, it can only be used to track temporal state changes of some objects as long as you track those changes as well. The state changes (of the definitions for example) could have an impact on the temporal states of the intervals. This leads to the frame problem for complex situations where you would like to be able to ignore those aspects of the reference models which are not being changed (and would not have an impact on a fundamental method that you wanted your program to rely on). This might be feasible for a constrained problem but it is a major issue when dealing with widely distributed knowledge (where the knowledge that might be needed in some particular situations is not somehow conveniently known). There seems to be a solution to the Yale Shooting Problem but so what? The utilization of some more logical solutions are going to work in some cases but not in others since they are based on further definition of the problem. So you can come up with all these cool logical and numerical methods but once you realize that you would use something like Allen's Interval Algebra in situations where you have incomplete knowledge and the relevant knowledge might be extensive, then you end up back in the Frame Problem. So I feel that conceptual integration is the problem (for working with conceptual insights) because once you find effective ways to integrate different ways to define a conceptual subject matter then the program could start to derive possible solution paths for kinds of situations that can be relevant. Because of cross-generalization methods these -kinds- of solution paths could be used to derive possible solution paths in other kinds of solutions. So there are ways to work with redefinitions of the basic data management systems. However, these methods may not work with higher order conceptual management. You have to figure out strong conceptual integration methods so that the program will be able to derive strong ways to deal with incomplete knowledge. - Jim Bromer On Fri, Sep 6, 2013 at 2:31 PM, Piaget Modeler <[email protected]>wrote: > Hi All, > > Just wanted to get a survey. I'm thinking about what modularity means in > an interpreted language. I'm working on a new language for my research > and came upon a question in modularity and interpreter design. > > If you have existing objects defined in memory and you load a new module > which redefines the type hierarchy, what should happen? > > In most dialects of SQL, when adding a module (i.e. a script), say to > build > a database, there is code to delete an existing object before defining > the > new object. For example, when defining a new table, often there is code > to drop the table beforehand: > > If ( exists(table(A))) then drop table A ; > Create table A as blah blah blah... > > Redefinitions can obliterate existing database objects. The scripting can > be controlled by the developer so that redefinitions do not destroy > existing > objects but rather just signal errors. > > In 3 GL languages like C++, Java, etc. when a code module is accidentally > included twice in a source file, what exactly happens? Does the compiler > redefine or ignore the functions or objects in the duplicate module? What > about interpreted languages like python? > > Your thoughts? > > Michael. > *AGI* | Archives <https://www.listbox.com/member/archive/303/=now> > <https://www.listbox.com/member/archive/rss/303/24379807-f5817f28> | > Modify<https://www.listbox.com/member/?&>Your Subscription > <http://www.listbox.com> > ------------------------------------------- AGI Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-f452e424 Modify Your Subscription: https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-58d57657 Powered by Listbox: http://www.listbox.com
