# Project structure
Rules and notes for how to structure the project
# Undecided
Should matrix deref to tensor-2d or the other way around?
## Lazy code execution
Lazy code execution should be handled by the users of slas.
### Exceptions
There is a more performent way of performing an operation on a lazily computet type.
### Example of when slas should NOT handle lazy code execution
Normalization. There is no operation defined in slas that benefits from knowing that a type has been normalized.
This would mean that all special cases that justify lazy normalization would have to be implemented by the user anyway.
### Example of when slas should handle lazy code execution
Matrix transpose.
Matrix multiplication as defined in slas can be done faster if it is known that a matrix has been lazily transposed.
This means that operations can be performed faster without the user needing to redefine the matrix multiplication operation for lazily transposed matricies.
### How should lazy code execution be handled by the user, when it is not handled by slas?
**I don't know yet, but some possible ideas are:**
- wrapper types + flagstack + deref to slas types.