Monadic Constraint Programming