[Issue 11927] New: a good proposal
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Jan 14 23:02:43 PST 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11927
Summary: a good proposal
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: galaxylang at gmail.com
--- Comment #0 from galaxylang <galaxylang at gmail.com> 2014-01-14 23:02:34 PST ---
1:>a normal dumb question is like this
auto F()
{
}
auto C(alias A)()
{
return A();
}
auto B(A)()
{
return A();
}
int main(string[] argv)
{
C!F();
B!F();//Error: template instance B!(F) does not match
// template declaration B(A)()
return 0;
}
this need change alias can accept syntax
alias B=expression;
i think C should change to B syntax,now we can talk about some enhancement
2:>lambda with template
int main(string[] argv)
{
alias f=(x)=>x+1;
f(1);
f(1.0);
return 0;
}
3:so lambda function can pass to it
auto more(F)()
{
return F(1)+1;
}
int main(string[] argv)
{
alias f=(x)=>x+2;
more!(f)();
}
4:>template designed to compile time computing const value and types ,alias and
pure function can compulate const ,
if a funtion only have function and types(without side effect values)just is a
template to compulate types
auto type(bool selector,A,B)()
{
alias type=selector?A:B;
}
auto isInt(T)()
{
alias isInt=(T is int);
}
alias Fun=type(int,F1,F2);
//even more if we change syntax to
auto type(bool selector,A,B)
{
alias type=selector?A:B;
}
auto isInt(T)
{
alias isInt=(T==int);
}
alias Fun=type(int,F1,F2);
value and type campute now morge into one syntax,template keyword maybe would
lost it's work
5:>Further,side effect value and type can in one function
auto compute(T)(T i)
{
static if(T is int)
alias compute=1;
else
alias compute=1.0/i;
}
--
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list