presi escribió:
Vaya, sí que hace tiempo que no tenía noticias tuyas, Vicente.
En cuanto he visto tu pregunta (casi una pregunta de novato, por cierto

) sabía que te dirigirían inmediatamente a Inform 7, a mi personalmente Inform 7 no me gusta nada como ya
argumenté en su momento, ahora bien si te has
ablandado en estos últimos años es posible que hasta te guste.

Ya que lo has rescatado lo voy a matizar (ahora que puedo). El código que pones como ejemplo:
Código:
Colour is a kind of value. The colours are red, blue and green. A
block is a kind of thing. A block has a colour. A block is usually
blue. Before printing the name of a block: say "[colour] ". Before
printing the plural name of a block: say "[colour] ". Understand the
colour property as describing a block.
No sería tanto lo que pones:
Código:
colour:value(red,blue,green)
block:thing
colour blue
before
name,nameplural: print colour
name colour
Como algo como esto:
Código:
Colour:value
Range.Colour := {red, blue,green}
Block:thing
Block.colour:Colour
Block.colour = blue
Block.name = self.colour
Action print_name on Block:[ print self.colour ]
Action print_plural_name on Block:[ print self.colour ]
Es decir, la 'virtud' principal (fuera de que esté escrito en un remedo de lenguaje natural o no) es que son 'reglas' a considerar de forma independiente sin relevancia del orden. Podemos ponerlo un poco más explícito 'adornando' el caso anterior:
Código:
Consider: Colour as subclass of value
Range Definition: Colour range is {red, blue,green}
Consider: Block as subclass of thing
Attribute Definition: Block contains colour ofType Colour
Attribute Default: Block.colour has default value of blue
Attribute Relation: Block.name is Block.colour
Redefinition of Action print_name on Block: [ print self.colour ]
Redefinition of Action print_plural_name on Block: [ print self.colour ]
Y viéndolo en esta forma tampoco hay tanta diferencia con la sintaxis de I7, ¿no?