Computational Semantics with Functional Programming