A Functional Plus Predicate Logic Programming