transient-haskell / transient

A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state)
MIT License
630 stars 28 forks source link

Deprecate redundant state management primitives #51

Open harendra-kumar opened 7 years ago

harendra-kumar commented 7 years ago

There are two versions of state management primitives, ending with Data and ending with State, it creates unnecessary confusion. It is better to not have redundancy at all, therefore we can deprecate and later remove one set of these. I guess the ones with State suffix should be removed.

agocorona commented 7 years ago

The problem I detected with the suffix Data is that haskellers associate it with mutable state. It is not. It is pure state, like in the state monad. I introduced the suffix State just for this reason.... maybe Data is to be deprecated. I use Data trough all the sources...

harendra-kumar commented 7 years ago

I suggested to keep "Data" because:

1) It is the one being used widely 2) We store and retrieve by data types, so "Data" is sort of a reminder for that.

I think the confusion may be largely because it was not properly explained in the documentation and people made their own guesses how it might behave. I have added concise and precise documentation in the module so that problem will not be there. Though I would be fine with any one of those, as long as we have only one.