FPCA: Functional Programming Languages and Computer Architecture