Merge Sort implementation with generators and recursion
You don't actually get benefits from using generators in this particular implementation since you are still slicing actual lists having the slices created in memory. And, you also collect the results into a new_l list being created in memory and returned all at once.

You should use iterative islice() like demonstrated in this example. Also, check out this generator-based merge sort implementation - note how the results are yielded from the "merge sort" function.



Some code style related notes:


since you return from the function when len(lis) &lt;= 1, you can omit the else: part and decrease the indentation level of the case when len(lis) is more than 1
improve your variable naming - lis is not a good way to workaround not naming a variable list, over should probably be middle, cRL and cLL should probably become left and right etc.
documentation strings should start with a capital letter and end with a dot, according to PEP8 style guide (reference)
watch for other PEP8 code style violations - specifically, watch for spaces around operators (reference)