Hi Hernan,On Sat, Feb 7, 2015 at 7:41 AM, Hern�n Morales Durand <hernan.morales@gmail.com> wrote:2015-02-07 5:59 GMT-03:00 kilon alios <kilon.alios@gmail.com>:Personally I don't like Pragmas, they have not convinced me so far that they fit the style of Smalltalk syntax. I have to confess though I never liked descriptive elements and languages .�Me neither. Actually the pragma idea is not wrong per se, it is the tag syntax to write them which bothers me. Because the world can be described with tags if you start that path.How exactly is the syntax wrong?The <literalMessagePattern> syntax predates pragmas.� It was used first for numeric primitives in Smalltalk-76 or Smalltalk-80.� Squeak extended it with primitive:module:.� I and others extended it to include arbitrary literal message patterns.� The syntax of a literal message pattern is the syntax of a send with no receiver and only literal arguments.� The use of this syntax meansa) no new syntaxb) each pragma is potentially executablec) methods using specific pragmas can be found using "find senders"d) the execution side of a pragma can be found using "find implementors"So what's wrong with that?� How is it wrong to use a common Smalltalk object, a Message, that is well-supported in the system, for method metadata?
�There are other ways to add metadata to methods. Without tagging.Haven't we discussed that?� Putting metadata off to the side introduces a bookkeeping problem.� It is a bad idea.
�And they don't need to be in the method pane itself.For some kinds of metadata, for metadata with semantics, not just a documentary function, it is important for the metadata to be obvious.� No one has argued for hiding the primitive specification off-to-the-side. �"Need" is a poor criticism here because using turing equivalence lots of things don't "need" to be the way they are.� Instead why not ask what are the pros and cons?�It is like having to specify protocol because there is no list pane to create them.I disagree.� When the pragma is specifying type information, specifying that the method is an action on a specific menu, is a pane in an inspector, and many other uses, it is essential that that information be represented, and putting it in a one-off bookkeeping system is a bad idea.� We're not talking about simple documentary metadata like author, category etc.� We're using pragmas for semantics, semantics of the method that are outside of its execution semantics, semantics about how the method fits in the broader system.� And putting that in non-obvious places is a bad idea. �