D vs Rust: function signatures

bearophile via Digitalmars-d digitalmars-d at puremagic.com
Wed Apr 30 02:21:08 PDT 2014


Nick Sabalausky:
> On 4/29/2014 9:38 PM, Narrator wrote:
>>
>> fn map<'r, B>(self, f: |A|: 'r -> B) -> Map<'r, A, B, Self>
>>
>
> That looks like line noise.

In D there is a lambda syntax:

auto F = (in int x) => x ^^ 2;
void main() {
     int y;
     auto G = (in int x) => x + y;
     pragma(msg, typeof(F));
     pragma(msg, typeof(G));
}


That code contains the types (the pragma output is a little 
different):

int function(in int) pure nothrow @nogc @safe
int delegate(in int) nothrow @nogc @safe


An alternative syntax can be similar to the way you write D 
lamdas:

(in int) pure nothrow @nogc @safe => int
(in int) nothrow @nogc @safe ==> int

(I am not suggesting to introduce this syntax to D because its an 
useless duplication, but I find it a bit better.)

Bye,
bearophile


More information about the Digitalmars-d mailing list