Much practical work with complex and hypercomplex numbers involves separating, individually manipulating, and re-joining their coefficients (such as the real and imaginary parts).

Currently, monadic system function ⎕dc provides an indispensable means for doing this.

It can both separate and join individual complex coefficients.

But these operations are so fundamentally basic that they should be given full status as first class citizens among the primitive functions.

So, I propose two new primitive monadic functions dilate > and condense < .

Dilate separates out the 1 or 2 or 4 or 8 real coefficients in a complex or hypercomplex value.

(⍴real),1 ←→ ⍴ real1← > real

(⍴complex),2 ←→ ⍴ real2← > complex

(⍴quaternion),4 ←→ ⍴ real4← > quaternion

(⍴octonion),8 ←→ ⍴ real8← > octonion

Condense joins the 1 or 2 or 4 or 8 real coefficients into a complex or hypercomplex value.

s ←→ ⍴ real← < real1← (s,1)⍴ real

s ←→ ⍴ complex← < real2← (s,2)⍴ real

s ←→ ⍴ quaternion← < real4← (s,4)⍴ real

s ←→ ⍴ octonion ← < real8← (s,8)⍴ real

where

r ←→ <>r

for any non-nested r of any shape of any numeric type, including real (which has only 1 coefficient).

(BTW-- ⎕dc does not go this far with 1-component reals.)