How to best define a type with an argument not filled by the user

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