Why Ruby?
Andrej Mitrovic
andrej.mitrovich at gmail.com
Sat Dec 18 20:04:53 PST 2010
On 12/19/10, Nick Sabalausky <a at a.a> wrote:
>
> int foo(int x) { ... }
> map!"foo(a) * 2" // Trivial lambda, but it fails
Currently this will call unaryFunImpl, which tries to evaluate foo(a)
at compile-time, but foo isn't visible from std.functional, where
unaryFunImpl is defined.
I don't know, maybe Phobos could construct a closure out of the string
somehow if it detected that there's a function call in that string,
here's some pseudocode modified from std.functional:
template unaryFunImpl(alias fun, bool byRef, string parmName = "a")
{
static if (is(typeof(fun) : string))
{
// added: detect if there's a function call in that string
static if (hasFunctionCalls(fun))
{
// if so construct a closure, and that should be it
alias newclosure result;
}
else
{
// Otherwise do as usual in std.functional.unaryFunImpl
template Body(ElementType)
{
}
// old code...
}
}
else
{
alias fun result;
}
}
More information about the Digitalmars-d
mailing list