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