Fix ST-related problems with Frozen dataty #71
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Another attempt to fix problems with
Frozen
discussed in #56, #67Unlike previous attempt it does maintain injectivity and allows to work with ST
monad without any problems. MonadRandom's first type has * -> * kind.
Key idea is that for mutable PRNG state token variable is determined by monad
and for pure PRNG state var does not matter so we can pick anything, say ().
RE naming. I run out of good names so I picked
Tok
. Naming suggestions are greatly appreciated.Also I think it would be desirable to flip
Frozen
data family. Instead of mutable generator and its frozen state we should have frozen generator and its mutable version. That will allow to 1) make MonadRandom instances for pure PRNG 2) possibly will allow to generalizerunPrimGenST
& Co.