Discrete Functional Analysis