Ah, I misunderstood your original code. It should then be as simple as making the inner constructor only a single argument and eliminating the outer constructor. (If I’m interpreting your desire correctly).
struct RandHaar <: Interferometer
m::Int
U::Matrix{ComplexF64}
RandHaar(m) = new(m,rand_haar(m))
end