On 11/27/20 9:01 AM, ddcovery wrote:
On Friday, 27 November 2020 at 16:40:43 UTC, ddcovery wrote:
...
* Can the lambda be transformed to a template (using T instead "int")
but avoiding function/return syntax?
This is an example using function
template qs(T){
T[] qs( T[] items ){
return items.length==0
? items
: chain(
qs(items[1..$].filter!(i=> i<items[0] ).array),
items[0..1],
qs(items[1..$].filter!(i=> i >= items[0]).array)
).array;
}
}
I mean... transform this into a lambda expression:
T[] qs(T)( T[] items ){
return items.length==0
? items
: chain(
qs(items[1..$].filter!(i=> i<items[0] ).array),
items[0..1],
qs(items[1..$].filter!(i=> i >= items[0]).array)
).array;
}
This has been done with the Y-combinator, where the lambda refers to
itself as 'self':
https://github.com/gecko0307/atrium/blob/master/dlib/functional/combinators.d
There has been been other discussions on it on these forums.
Ali