@inverse
Xinok via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 25 16:55:59 PST 2015
On Wednesday, 25 February 2015 at 21:25:49 UTC, Daniel N wrote:
> Just throwing an idea out there... How about using annotations
> to teach the compiler which functions are inverses of
> each-other, in order to facilitate optimizing away certain
> redundant operations even if they are located inside a
> library(i.e. no source).
>
> A little pseudo-code for illustrational purposes, in case my
> above text is incomprehensible:
>
> void inc() pure nothrow @inverse(dec)
> void dec() pure nothrow @inverse(inc)
>
> void swap(T)(ref T lhs, ref T rhs) pure nothrow @inverse(swap!T)
I like the idea but feel that it's application is too narrow. I
prefer features which are more general and offer greater
flexibility. I believe I've read somewhere that some [functional]
languages define common patterns and equivalent substitutions for
optimization purposes.
inc(dec(x)) -> x
dec(inc(x)) -> x
cos(x)^^2 + sin(x)^^2 -> 1
More information about the Digitalmars-d
mailing list