A functional plus predicate programming language