On Thu, Jun 12, 2014 at 10:35 PM, Rounin via Digitalmars-d-announce <digitalmars-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.