On Wed, Aug 12, 2020 at 8:12 AM Tobias Boege <t...@taboege.de> wrote:

> [...]
> > Would a custom version of the trait_mod:<is> routine do the trick?
>
> Yes:
>
>   multi trait_mod:<is> (Routine $r, :$equivalence!) {
>       trait_mod:<is>($r, :equiv(&infix:<==>));
>       trait_mod:<is>($r, :assoc<chain>);
>   }

As a supplementary question: is it possible to build up trait
modifications from simpler ones? Something like:

multi trait_mod:<is> (Routine \routine, :$equality!) {
  trait_mod:<is>(routine, :equiv(&infix:<==>));
}

multi trait_mod:<is> (Routine \routine, :$chainable!) {
  trait_mod:<is>(routine, :assoc<chain>);
}

multi trait_mod:<is> (Routine \routine, :$equivalence!) {
  {magic to ensure routine is equality and routine is chainable}
}

Although I'm not yet sure that's a good idea.

Thanks,

Stu

Reply via email to