FUNLOG: A Computational Model Integrating Logic Programming and Functional Programming