Re: mixin template FAIL

2012-02-24 Thread Zach the Mystic

On 2/23/12 7:33 PM, Ellery Newcomer wrote:

import std.stdio;

mixin template helpMe()
{
writeln(Satisfying!);
}

does it do that if you replace the statement with a declaration?

like this:

mixin template helpMe()
{
int durrr = (writeln(Satisfying!), 1);
}


No, it doesn't. You're right. I guess I have a long way to go to learn 
these things.


Thank you. Even at my primitive level, though, I can see how awesome 
these things could be once you know how to program them. Does any other 
language come close to D in terms of generics? I don't know, I'm just 
asking?


Zach


Re: mixin template FAIL

2012-02-24 Thread H. S. Teoh
On Fri, Feb 24, 2012 at 03:08:18PM -0500, Zach the Mystic wrote:
[...]
 Does any other language come close to D in terms of generics? I don't
 know, I'm just asking?
[...]

AFAIK, no. But then I only have C++ to compare with, and if I understand
it correctly Java and C#'s generics don't even come close to C++'s
templates (in terms of expressive power, though they are certainly a lot
cleaner than the mess that is C++ template syntax).


T

-- 
Some ideas are so stupid that only intellectuals could believe them. -- George 
Orwell


Re: mixin template FAIL

2012-02-24 Thread James Miller
On Feb 25, 2012 9:08 AM, Zach the Mystic 
reachzachatgooglesmailserv...@dot.com wrote:

 On 2/23/12 7:33 PM, Ellery Newcomer wrote:

 import std.stdio;

 mixin template helpMe()
 {
 writeln(Satisfying!);
 }

 does it do that if you replace the statement with a declaration?

 like this:

 mixin template helpMe()
 {
 int durrr = (writeln(Satisfying!), 1);
 }


 No, it doesn't. You're right. I guess I have a long way to go to learn
these things.

 Thank you. Even at my primitive level, though, I can see how awesome
these things could be once you know how to program them. Does any other
language come close to D in terms of generics? I don't know, I'm just
asking?

 Zach

Lisp macros. But that's not a fair comparison, Lisp's object system was
built using their macros...

--
James Miller


Re: mixin template FAIL

2012-02-23 Thread H. S. Teoh
On Thu, Feb 23, 2012 at 05:27:03PM -0500, Zach the Mystic wrote:
 On 2/21/12 2:53 PM, Ali Çehreli wrote:
 According to the docs, template mixins can have only declarations but
 helpMe above has a statement.
 
 http://dlang.org/template-mixin.html
 
 Ali
 
 
 Thanks for your reply. You're right about the statement. But I still
 think something's wrong. For example, even this program produces the
 errors:
 
 import std.stdio;
 
 mixin template helpMe()
 {
writeln(Satisfying!);

The writeln call is a statement.

I think what you want is this:

template helpMe() {
mixin(`writeln(Satisfying!);`);
}


T

-- 
Real Programmers use cat  a.out.


Re: mixin template FAIL

2012-02-23 Thread Ellery Newcomer


Thanks for your reply. You're right about the statement. But I still
think something's wrong. For example, even this program produces the
errors:

import std.stdio;

mixin template helpMe()
{
writeln(Satisfying!);
}



does it do that if you replace the statement with a declaration?

like this:

mixin template helpMe()
{
  int durrr = (writeln(Satisfying!), 1);
}


Re: mixin template FAIL

2012-02-21 Thread Ali Çehreli

On 02/21/2012 10:47 AM, Zach the Mystic wrote:
 I decided to try using template mixin, but even the simplest program
 fails. What's wrong with this code? Error list follows.
 DMD64 D Compiler v2.057 OSX 10.6

 import std.stdio;

 mixin template helpMe()
 {
 writeln(Satisfying!);
 }

 void main()
 {
 mixin helpMe();
 }

 test.d(5): unexpected ( in declarator
 test.d(5): basic type expected, not Satisfying!
 test.d(5): found 'Satisfying!' when expecting ')'
 test.d(5): no identifier for declarator writeln(int)
 test.d(5): semicolon expected following function declaration
 test.d(5): Declaration expected, not ')'
 test.d(10): ';' expected after mixin
 test.d(10): found ')' instead of statement


According to the docs, template mixins can have only declarations but 
helpMe above has a statement.


  http://dlang.org/template-mixin.html

Ali



Re: mixin template FAIL

2012-02-21 Thread Jacob Carlborg

On 2012-02-21 20:53, Ali Çehreli wrote:

On 02/21/2012 10:47 AM, Zach the Mystic wrote:
  I decided to try using template mixin, but even the simplest program
  fails. What's wrong with this code? Error list follows.
  DMD64 D Compiler v2.057 OSX 10.6
 
  import std.stdio;
 
  mixin template helpMe()
  {
  writeln(Satisfying!);
  }
 
  void main()
  {
  mixin helpMe();
  }
 
  test.d(5): unexpected ( in declarator
  test.d(5): basic type expected, not Satisfying!
  test.d(5): found 'Satisfying!' when expecting ')'
  test.d(5): no identifier for declarator writeln(int)
  test.d(5): semicolon expected following function declaration
  test.d(5): Declaration expected, not ')'
  test.d(10): ';' expected after mixin
  test.d(10): found ')' instead of statement
 

According to the docs, template mixins can have only declarations but
helpMe above has a statement.

http://dlang.org/template-mixin.html

Ali



And the correct syntax for mixing in the template would be:

mixin helpMe!();

Or

mixin helpMe; // works if the template doesn't take any arguments

--
/Jacob Carlborg


Re: mixin template FAIL

2012-02-21 Thread Ellery Newcomer

On 02/21/2012 01:53 PM, Ali Çehreli wrote:


According to the docs, template mixins can have only declarations but
helpMe above has a statement.

http://dlang.org/template-mixin.html

Ali



come to think of it, I've occasionally wished for statement mixins. This 
would make a good enhancement request.