In this paper, we present our proposal to Constraint Functional Logic Programming over Finite Domains (CFLP()) with a lazy functional logic programming language which seamlessly embodies finite domain () constraints. This proposal increases the expressiveness and power of constraint logic programming over finite domains (CLP()) by combining functional and relational notation, curried expressions, higher-order functions, patterns, partial applications, non-determinism, lazy evaluation, logical variables, types, domain variables, constraint composition, and finite domain constraints. We describe the syntax of the language, its type discipline, and its declarative and operational semantics. We also describe , an implementation for CFLP(), and a comparison of our approach with respect to CLP() from a programming point of view, showing the new features we introduce. And, finally, we show a performance analysis which demonstrates that our implementation is competitive with respect to existing CLP() systems and that clearly outperforms the closer approach to CFLP().