On 2/15/18 2:11 PM, Seb wrote:

I reworded the entire paragraph and it now shows the AST:

https://seb.wilzba.ch/b/2018/02/the-expressive-c17-coding-challenge-in-d/#4-whats-up-with-this-enforce

eh...

"string which is an alias for an array of const(char) elements"

It's not actually, it's an array of immutable(char) elements.

But I think the reason we see const(char)[] delegate and not immutable(char)[] delegate, is that enforce's actual signature is:

T enforce(E : Throwable = Exception, T)(T value, lazy const(char)[] msg = null, string file = __FILE__, size_t line = __LINE__)

Not lazy string as you originally said.

https://dlang.org/phobos/std_exception.html#.enforce

In fact, you can see "string" output by the AST generator in other places (e.g. void main(string[] args) ), so even that whole explanation that it has "resolved" string already is misleading ;)

BTW, I have to click on the AST button on run.dlang.io (at least on my browser) to see the generated AST, it's not done automatically.

My idea was that we have this subtextual message: "look, D isn't complicated and we can always look behind the scenes".

I like the message, a lot! I think it's a very nice way to show some well-written D code while explaining each part so they make sense to outsiders.

-Steve

Reply via email to