www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How use Predicate (alias pred = "a*b")?

reply Marcone <marcone email.com> writes:
import std;

template foo(alias pred = "a*b"){
	void foo(int x, int y){
		writeln(x.unaryFun!pred);
	}
}

void main(){
	foo(5, 4);
}


"a" works, but "b" not work.
I get this error: Error: undefined identifier `b`
May 13 2021
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:
 template foo(alias pred = "a*b"){
 	void foo(int x, int y){
 		writeln(x.unaryFun!pred);
First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
May 13 2021
next sibling parent Marcone <marcone email.com> writes:
On Thursday, 13 May 2021 at 21:38:25 UTC, Adam D. Ruppe wrote:
 On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:
 template foo(alias pred = "a*b"){
 	void foo(int x, int y){
 		writeln(x.unaryFun!pred);
First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
This is just a simple example of how it works. I won't use it. However, I believe it will be very useful for meta programming.
May 13 2021
prev sibling parent Marcone <marcone email.com> writes:
On Thursday, 13 May 2021 at 21:38:25 UTC, Adam D. Ruppe wrote:
 On Thursday, 13 May 2021 at 21:30:43 UTC, Marcone wrote:
 template foo(alias pred = "a*b"){
 	void foo(int x, int y){
 		writeln(x.unaryFun!pred);
First, you really shouldn't use these at all. instead of a string, just pass an actual function to the thing as the predicate. but if you must use it, unaryFun has one argument, so just a. if you want a and b, two arguments, that's binaryFun.
Thank you. binaryFun solved the problem.
May 13 2021