0.3 - Attributes: Give me where to stand...

The introduction of attribute trees creates a new behavioral model for exploration and exploitation.

An implication worth noting is the emphatic new conceptual distinction between a single attribute

&example me=this is an example

and the single attribute which also serves as the root segment of an attribute tree

&example me=these are my examples
&example`a me=these are my 'a' examples
&example`a`1 me=this is example 'a1'
&example`a`2 me=this is example 'a2'
&example`b me=these are my 'b' examples
&example`b`1 me=this is example 'b1'
&example`b`2 me=this is example 'b2'

This is a new conceptual imperative: Any single attribute can, at any time, conceivably be (become, be treated as, and/or behave as) a portion of an attribute tree.

This imperative's potential lends itself somewhat naturally to subroutine management such as that illustrated by the ~reboot module in which @startup behaves both as a single attribute (containing code which is triggered at startup)

@startup #1=<this code is automatically triggered and it retrieves code from attribs in the startup` tree without directly triggering those attribs>

and as the root of a tree of other attributes (each containing code to be placed in the queue by the code in the @startup attribute).

&startup`0000 #1=<this is the first piece of code retrieved for execution by me/startup>

(Changes to ~reboot pending.)

Other implications resulting from this imperative can be found, coincidentally, within god's startup actions: specifically those actions involving the @attrib command and its family.

Give me where to stand and I will move the earth.

A remark attributed to Archimedes by Pappus of Alexandria (in his "Collection") and commonly called "Archimedes Lever", this simple assertion of relativity long predates that of Einstein's mathematical equations. Furthermore, Archimedes assertion better illustrates the reality of human experience.

In a very 'human experience' way, Archimedes Lever describes this new imperative of attribute trees with tremendous precision.

An examination of a minimalist example can illuminate this for us quite nicely, so let us look at a tree based on single-character name segments. To explore this concept, we'll use our special attribute, the tilde (~), as the root of the tree, then expand it with other common single characters (0-9, a-z, possibly others) as branches and leaves.

Let us first work with 0-9 as leaves, directly attached to the root.

~
~`0
~`1
~`2

etc...

This imperative carries one set of implications if the root attribute needs different attribute flags than the numbered leaf attributes, and another set of implications if the root attribute is flag-indifferent (e.g., it's empty - the default, since it's automatically generated whether you intend to use it or not).

Once again, our startup` tree, if applied to a player ancestor, illustrates this well -- you want the basic processing code (the startup attribute) to be available to all players, yet you also want the remainder of ancestor's startup' leaves to not be inherited (i.e., only apply directly to ancestor) -- you can do this by setting the branch (startup`) no_inherit.

If the tree is expanded to more levels (e.g., the addition of a-z as leaves on the 0-9 branches), the aforementioned implications remain present. However, as the number of levels increase (at least the first few branches beyond the first branch) these same implications can become organizational organizational variables. For example, ...

~
~`0
~`0`a
~`0`b
...
~`1
~`1`a
~`1`b
...

It's important to remember, at this time, that restrictions are inherited but privs are not, and that restrictions are only inherited by the leaves of the branch to which they're applied.

Adding to this, entire trees can be completely veiled from a default examine by simply veiling their root attribute.

So, one of potentially countless applications of our 'where to stand' philosophy is that at any single branch point (where to stand) we have the ability to control (restrict) all of its leaves (move the world)... all the while leaving the branch point itself (which may be an in-use leaf of a lower branch) and all subsequent branches (leaves of the current branch which are also branch points for subsequent branches and/or leaves) and their leaves unaffected.

And this is as good a time as any to complicate the overall situation even further (at least initially) by re-introducing the attribute naming concepts from the original version of this section. (Until I add a more updated and relevant version of these concepts, you can review the 'Old' subpage of this page.)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Attribute trees

With the availability of attribute trees, and your functional prefixes, perhaps names shouldn't be delimited by periods but by backticks (`), to make them attribute trees.

You could then enforce restrictions by prefix (e.g. no_command for the DATA` tree) and have a cleaner examine as well, perhaps.

Time travel

At the time of the original draft of this document, 'attribute trees' was still in development (notice in my ITBG log, referenced in the ~cron page, that I was aware of it's progress - it just wasn't available at the time of this original writing). I'm planning a small rework to this page anyway, so I'll work 'trees' into that plan. Thanks!

... and to all a good night!

Request for comment

As documented elsewhere on this site, the tilde (~) has been assigned a sort of 'special' quality, purpose, and/or usage potential.

Recent emergence of this practice with reference to @attrib and attribute trees has raised a number of questions relevant to the rewrite of this section of the manifest.

To illustrate, let us assume a convention which uses the tilde (~) as the 'base' or 'root' of an attribute tree system for managing game information. And god's startup needs to appropriately manage the permissions for this ~` tree.

Question: If '~' is retained to the individual player for utilizing scripts which rely on the aforementioned warpedcore reserved usage, what subsequent effects would be inflicted/prohibited/restricted upon the branches tree thereafter?

Question: How should warpedcore plan to utilize trees and tree-based privileges and restrictions toward optimizing common and/or frequently encountered attribute management situations?

Question: Should [some] attribute flags also be considered organizational categories (see ~reboot)?

Discuss...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.