<br><br><div class="gmail_quote">On Mon, Apr 26, 2010 at 12:05 PM, Andreas Raab <span dir="ltr">&lt;<a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
On 4/26/2010 11:48 AM, Eliot Miranda wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
OK, so Pragma is bad; its historical from &quot;primitive pragma&quot;.  But<br>
Annotation doesn&#39;t capture the potentially executable flavour of<br>
pragmas.  How about MethodMetaMessage?  (mmm, yum :) )  We could talk<br>
about meta-messages for short. &quot;Add a meta-message that does ...&quot; etc...<br>
</blockquote>
<br>
But &quot;primitive pragma&quot; is every bit as wrong. A pragma is something that gives the compiler information about the code without being code itself. Primitives are&#39;t pragmas, primitives are *code* (if you don&#39;t believe me, just remove all of them and see how that goes).<br>
</blockquote><div><br></div><div>I know, but within ParcPlace a &lt;primitive: 123&gt; mark was /called/ a primitive pragma, and so &quot;pragma&quot; was the term we used (without sufficient thought) when we did the menu and exception &quot;pragma&quot; work in vw3.0.  </div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
By definition, a &quot;pragma&quot; is an interface between the code and the compiler, something where the code conveys meta-information to the compiler. For example, this is a pragma (assuming the compiler understands it):<br>

<br>
foo<br>
        &lt;inline: true&gt;<br>
<br>
bar<br>
        &lt;tailcut: true&gt;<br>
<br>
The first one might instruct the compiler to generate the code for this method inline, the second one to eliminate tail recursion.<br>
<br>
None of these, however, are pragmas:<br>
<br>
foo<br>
        &quot;Not a pragma since it&#39;s not for the compiler&quot;<br>
        &lt;preference: &#39;Foo Preference&#39;<br>
          ...<br>
        &gt;<br>
<br>
apiGetWindowFocus<br>
        &quot;Not a pragma since it&#39;s code&quot;<br>
        &lt;apicall: ulong &#39;GetWindowFocus&#39; (void)&gt;<br>
<br>
etc. I should also add that before the introduction of the so-called &quot;pragmas&quot; there was only *code* used in the &lt;&gt; syntax (primitives and FFI calls) and the change to allow non-code entities is something that, although useful, still worries me because of the conceptual issues associated with mixing code and non-code entities. We wouldn&#39;t even have that discussion if &lt;&gt; just meant &quot;code&quot;.<br>

<br>
Cheers,<br><font color="#888888">
  - Andreas<br>
<br>
</font></blockquote></div><br>