Structures for working with quantum systems, both abstractly and numerically, using dependent types in the Idris language