New library: open multi-methods
Jean-Louis Leroy via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Jul 19 05:29:36 PDT 2017
On Tuesday, 18 July 2017 at 18:21:21 UTC, Ali Çehreli wrote:
> On 07/18/2017 11:03 AM, jmh530 wrote:
>
> > the mixin(registerMethods); could then be adjusted so that
> void
> > print(virtual!Matrix m); is mixed in automatically because we
> now know
> > how to construct it.
>
> That reminds me: Would the following be possible and better?
>
> // From
> void main()
> {
> updateMethods();
> // ...
> }
>
> // To
> mixin(constructMethods());
> void main()
> {
> // ...
> }
>
> constructMethods() could return the following string:
>
> string constructMethods() {
> return q{
> shared static this() { updateMethods(); }
> };
> }
OK, I think I may have found solutions to both problems. The
question is, is it too hacky?
1/ method registration
Replace this:
import openmethods;
mixin(registerMethods);
...with:
mixin(import(openmethoddecls));
...that does the two above. Problem is, it needs -Jpath on the
command line to work. Unless there is a workaround?
2/ updateMethods
During static construction, I could set the dispatch tables to
make all the methods call a function that does updateMethods()
then re-dispatches. The cost of the first method call would be
huge, but if it matters the user can still call updateMethods
explicitly.
Thoughts?
More information about the Digitalmars-d-announce
mailing list