Philippe Sigaud Posted in reply to Rounin



Permalink Reply

On Thu, Jun 12, 2014 at 10:35 PM, Rounin via Digitalmars-d-announce <digita lmars-d- announce@ puremagic.com> wrote: > Hey there! Oh cool, thanks for answering! > Yeah, to expect people to register on LiveJournal in this age of Facebook... Sorry about that; It must have been to deter the spammers. Sorry for whining about it. I'm not on Facebook either, I just find it a bit bothersome to have to register every time I want to let a comment. I suppose I'm too used to always commenting in the same places and am leery to getting outside my comfort zones :-) > Thanks for taking the time to comment! Your solution with the single call to mixin() is much more elegant. I made a version 2 which uses it. > > The reason I used a double mixin() was that the first thing I tried was > mixin("foreach() etc. etc."), which I think may have failed due to the > foreach, then mixin("defineMain();"); , which was interpreted as a function > declaration, and then I went straight for the mixin("mixin()"); . If it > ain't broke, et cetera. > > I still think the double mixin() can compete in terms of comedy value, > though, don't you think? mixin("..."); pastes the inside code where the mixin is. So there is no real reason to mix a pure string like mixin("defineMain()"), since you could directly write it into your code. As for foreach, I guess it's because foreach is not a declaration and you cannot put it at the module level: module foo; foreach(i; 0..10) {} is illegal code, I suppose. Mixin or not. In fact, you'll probably never see mixin("some predefined code"); what is used is mixin("some code" ~ some external value ~ "more code"); or mixin(foo(args)); where foo returns a string. > Also, thanks for pointing out UFCS. It seems like a very convenient, not to mention SANE alternative to monkey patching, and it'll make it even more seamless to port code that makes use of that mechanism. Cool! Again, thanks for an interesting article.