I am having hard time understanding the following paragraph in "Purely functional Lazy non-deterministic  programing" paper  http://www.cs.rutgers.edu/~ccshan/rational/lazy-nondet.pdf

The problem with the naive monadic encoding of non-determinism is that the arguments to a constructor must be deterministic. If these arguments are themselves results of non-deterministic computations, these computations must be performed completely before we can apply the constructor to build a non-deterministic result.



Why does the argument to constructors must be deterministic?    WHy is it that thunks are not used in this case?


Thanks


--
Daryoush

Weblog:  http://onfp.blogspot.com/