<div dir="ltr"><span style="font-size:13px">I like this idea in principle and I know my colleague at work was wishing for it yesterday.</span><div style="font-size:13px"><br></div><div style="font-size:13px">C++11 has a constexpr which can be calculated at compile time, it can also call to other functions which are constexpr.</div><div style="font-size:13px"><br></div><div style="font-size:13px">You can make static assertions that produce a compile-time error.</div><div style="font-size:13px"><br></div><div style="font-size:13px">Another powerful feature of this is that a function&#39;s argument or return type could also be a constexpr.  This could allow protocols to be much stronger and have assertions or type restrictions that are currently only in documentation. Perhaps generic type constraints could be more expressive too.</div><div style="font-size:13px"><br></div><div style="font-size:13px">:+1: if it doesn&#39;t add much syntax, is safe and unsurprising I&#39;m all for this.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 9, 2015 at 7:01 AM, Alejandro Martinez via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi everyone,<br>
<br>
Don&#39;t take this mail as an oficial proposal but just as some food for thought, I wanted to talk about this to see what you think about it.<br>
<br>
I&#39;ve been following the list since the &quot;Open Source Day&quot; and I&#39;ve seen in many instances proposals that could have been solved by a macro system, being just a temporal solution since everything can&#39;t be done just now or being a permanent solution if that macro system existed. Some of them may include the thread about &quot;code smells&quot;, automatic wrapper synthesis or deriving, or even the topic about forwarding calls automatically to an inner object.<br>
<br>
My thinking was how difficult or viable it would be to run Swift code from our programs at compile time. I&#39;m not experienced enough on computer languages to see it. The first time that I saw this was in a video from Jonathan Blow (<a href="https://www.youtube.com/watch?v=UTqZNujQOlA" rel="noreferrer" target="_blank">https://www.youtube.com/watch?v=UTqZNujQOlA</a>) and it looked like a really good idea. It would be much better that force people to learn another language (the macro language) or any other kind of preprocessor, instead you could use all your knowledge but just at compile time. It can also have good usages apart form generating code, but generating data that can be generated and known at compile time. And allow even to improve the usage of the language (maybe DSL) at a library level.<br>
<br>
Blow seems like is going one step further and allowing the program to call the compiler as if it was a library and even he talks about allowing it to modify the AST, which is maybe going a little to far away.<br>
<br>
Anyway, that&#39;s the idea. Obviously is not something to be done in the near future.<br>
<br>
And sorry if it doesn&#39;t make any sense and I&#39;m just making you lose your time.<br>
<br>
Cheers,<br>
<br>
Alejandro Martínez<br>
@alexito4<br>
<a href="http://alejandromp.com" rel="noreferrer" target="_blank">http://alejandromp.com</a><br>
<br>
<br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><br></div>