Acknowledged, Neil and Diego, thank you. Dear Neil, LHS/RHS is used for setting attributes of a promise -- the details of the promise that constrain its nature. You can have a promise without LHS/RHS. For example:
commands: "/bin/echo test"; # this does something reports: cfengine_3:: "Hello World"; # this does something files: "/tmp/testfile"; # this does not do anything but it is valid syntax Dear Diego: it's true that CFEngine 3 syntax is very consistent, and this is a great relief to CFEngine 2 users. However it also allows for economy of expression, as witness implicit promise typing, implicit class re-use, implicit for loops over lists, and external body parts. The author's purpose (as I learned in his classes) is to make it easier to read policies by increasing the meaning to symbol ratio, aka economy of expression (a lot of meaning in a few symbols). This is like compression. Make it faster/easier for a sysadmin to read/assimilate the data. Dear Mark, please correct me if I've misduplicated you. I would posit every time you can remove an attribute without sacrificing meaning, it's an economy of expression win. So classes: "myclass"; would be a promise to set the class "myclass". Thanks for a great tool and a great community. :) Sincerely, Aleksey _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine