I just put together a basic linear operator package for Julia: https://github.com/dpo/linop.jl
The central idea is that operators act like matrices, but it would be too expensive to combine them before they are actually applied to a vector. Another benefit is that you can manipulate them as if they were matrices and write expressions such as y = (A' * A + B) * x without worrying that A' * A + B will actually be formed (it won't). There are basic tests, but more should be added, and lots is still missing (e.g., block operators, parallel operators, ...). Entire algorithms could be wrapped as operators so that conceptually, you could write things like: x = LSQR(A) * b to apply the LSQR algorithm to solve the least-squares problem with A and b. Feedback most welcome. Cheers.
