[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Making atomic trees




In article <30532@sophia.inria.fr>, Guido.Bosch@loria.fr (Guido Bosch) writes:
=> I noticed  a strange behaviour of Centaur while creating atomic trees
=> with trees as value (i.e.,  ({tree}:atom_class <tree>) -> tree):
...
=> ? ({tree}:make ({name}:operator 'product_every ({name}:formalism 'Trees)))
=> = (((({#:(()):#[]}:product_every 0 {#:(()):#[]}:tree) (#[{#:(()):#[]}:Trees 0
=> (((({#:(()):#[]}:comment_s {#:(()):#[]}:* (({#:(()):#[]}:COMMENT (({#:(()):#[]
=> }:meta 0 {#:(()):#[]}:metavariable) (#[{#:(()):#[]}:Trees 0 (((({#:(()):#[]}:
=> comment_s {#:(()):#[]}:* (({#:(()):#[]}:COMMENT (({#:(()):#[]}:meta 0 {#:((...
...
=> ? 'a
=> = {#:(()):#[]}:a
=> Seems that the creation of an atomic tree (with atom class `tree')
=> without value breaks down the LeLisp printer.

It is not just the LeLisp printer that is broken, in fact "t" and () are 
now redefined (to some equally obscure values).

=>  Is this a bug, or am I just not allowed to build empty atomic
=> trees???

You are not allowed to build empty atomic trees.  It is important to note
that {tree}:make's optional tree argument is the value when one is making an 
atomic tree.  

The problem comes from the fact that since the objects of the vtp are not
typed, there are several places within the vtp where the class of the object
is regarded to decide how to proceed.  Thus, if you say the value is a tree
and then you put in (), which is not a tree, it is bound to break somewhere 
along the line.  (Particularly, with trees when one worries about setting 
father pointers and the like, but i digress.)

	-- janet