! After the post, I've discovered the infix library, so ! here are some more readable versions of extr and comp: :: extr ( z x -- y ) [let | q [ z first ] r [ z second ] s [ z third ] T [ z fourth ] x [ x ] | [infix (q*x+r)/(s*x+T) infix] ] ; :: comp ( z1 z2 -- z3 ) [let | q [ z1 first ] r [ z1 second ] s [ z1 third ] T [ z1 fourth ] u [ z2 first ] v [ z2 second ] w [ z2 third ] x [ z2 fourth ] | [infix q*u+r*w infix] [infix q*v+r*x infix] [infix s*u+T*w infix] [infix s*v+T*x infix] ] 4array ; ! still I think there should be some nicer way...