   # 5j2-3j8 <=> 2j¯6
   # 5-3j8   <=> 2j¯8
   # -/⍬     <=> 0
-  dyad: (y, x) ->
-    if typeof x is 'number' and typeof y is 'number'
-      x - y
-    else
+  dyad: numeric ((y, x) -> x - y),
+    (y, x) ->
       x = complexify x
       y = complexify y
       simplify x.re - y.re, x.im - y.im

  # 0j2÷0j1  <=> 2
  # 5÷2j1    <=> 2j¯1
  # ÷/⍬      <=> 1
  dyad: div = (y, x) ->
    if typeof x is typeof y is 'number'
      x / y
    else
      x = complexify x
      y = complexify y
      d = y.re * y.re + y.im * y.im

  # (2 3⍴⍳6) + 3 2⍴⍳6              !!! LENGTH ERROR
  # 1j¯2+¯2j3                      <=> ¯1j1
  # +/⍬            <=> 0
  dyad: numeric ((y, x) -> x + y),
    (y, x) ->
      x = complexify x
      y = complexify y
      simplify x.re + y.re, x.im + y.im
