Closed mokus0 closed 13 years ago
I think I'm OK with things as they stand right now; Prim is a primarily-internal construct used mostly by rvar to do its magic. With the latest commits it is no longer exposed in any public API (as far as I know), so anyone that makes use of it should know that they are playing with internal stuff that is subject to change (or even disappearance).
I've done a fair amount of work to re-base the random-source system so that it is no longer necessary to use the 'Prim' interface to define a RandomSource or MonadRandom instance. In some cases it is still currently convenient to do so, and for that reason the low-level API is exposed through an "Internal" module. I have no problem with that; anyone that imports a module with that name should have a pretty clear understanding that future changes very well may break their code.
What I need to resolve for myself, though, is what the status of 'Prim' should be throughout the rest of the API. Presently I see a couple options:
I'm not at all convinced that these are all of the reasonable options, or even that all of these options are reasonable. I don't even know what the relevant concerns are right now. Concerns I can think of right now:
Prim a -> m a
functions, which would probably be a good idea anyway within the current system, because the logic that does that now should probably be separated from the instance-construction logic anyway.